Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
#1

Выполнить задание с использованием функций и текстовых файлов - C++

16.03.2010, 00:02. Просмотров 545. Ответов 5

Завал по лабам. Помогите плиз. Надо написать вот такую программку. По первой части мне все понятно. По второй смог написать только ввод( точнее написал все, но препод не принял). Мне идея понятна, но не могу грамотно реализовать.

1. Описать структуру с именем MARSH, содержащую следующие поля:
• название начального пункта маршрута;
• название конечного пункта маршрута;
• номер маршрута.
2. Написать программу, выполняющую следующие действия:
• ввод с клавиатуры восьми структур данных типа MARSH в файл;
• вывод на экран информации о маршрутах, которые начинаются или кончаются в пункте, название которого введено с клавиатуры;
• если таких маршрутов нет, вывести соответствующее сообщение.

Заранее благодарен!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2010, 00:02
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выполнить задание с использованием функций и текстовых файлов (C++):

С использованием текстовых файлов - C++
помогите первокурснице..... Файл содержит целые числа. Вычислить сумму значений из файла, в двоичном представлении которых K...

Форматный ввод/вывод с использованием текстовых файлов. - C++
ЗДРАВСТВУЙТЕ. МЕНЯ ЗОВУТ ДАША. У МЕНЯ ПРОБЛЕМА, Я НЕ ЧЕГО НЕ ПОНИМАЮ В С++, А У МЕНЯ ЗАЧЕТ, МОЖЕТ КТО ТО МНЕ СМОЖЕТ СДЕЛАТЬ МОЁ ЗАДАНИЕ: ...

Выполнить программу с использованием пользовательских функций - C++
Помогите переписать данную программу, но уже с использованием пользовательских функций. #include <vcl.h> #pragma hdrstop #include...

Дан массив целых чисел. Сделать задание с использованием пользовательских функций - C++
Дан массив целых чисел. Все его элементы: a) увеличить в 2 раза б) умножить на последний элемент в) увеличить на число B ...

Реализовать задание с использованием функций (ввод матрицы, вывод матрицы, вычисление суммы) - C++
Реализовать задание с использованием функций (ввод матрицы, вывод матрицы, вычисление суммы) и цикла for для вычисления суммы. Изменение...

Выполнить задания с использованием инструкции выбора if и с использованием условного оператора - C++
Выполнить задания с использованием инструкции выбора if и с использованием условного оператора ? (если он присутствует в языке...

5
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
16.03.2010, 06:30 #2
тут не сделан ввод и сообщения об ошибках

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#include <assert.h>
 
enum {
    MAXPOINT = 20
};
 
struct route {
    char pointA[MAXPOINT];
    char pointB[MAXPOINT];
    int num;
};
 
struct route *EnterRoutes(void);
char *EnterPoint(void);
struct route **SearchRoutes(struct route *, const char *);
void PrintRoutes(struct route **);
 
int main(void) /* ANSI C89 */
{
    struct route *prt;
    char *ppt;
    struct route **ppfrt;
    
 
    prt = EnterRoutes();
    
    if (prt == NULL)
        assert(0 && "enter routes");
    
    
    ppt = EnterPoint();
    
    if (ppt == NULL)
        assert(0 && "enter point");
    
    
    ppfrt = SearchRoutes(prt, ppt);
    
    if (ppfrt == NULL)
        assert(0 && "search routes");
    
    free(ppt);
    
    
    PrintRoutes(ppfrt);
    
    free(ppfrt);
 
    free(prt);
    
    
    exit(EXIT_SUCCESS);
}
 
struct route *EnterRoutes(void)
{
    struct route *pr;
    const int nr = 8;
    
    pr = (struct route *) malloc(nr*sizeof(struct route));
    
    if (pr == NULL)
        assert(0 && "enter routes allocation");
    
    strcpy((pr+0)->pointA, "one");
    strcpy((pr+0)->pointB, "onewhere");
    (pr+0)->num = 1;
    
    strcpy((pr+1)->pointA, "two");
    strcpy((pr+1)->pointB, "twowhere");
    (pr+1)->num = 2;
    
    /* ... */
    
    return pr;
}
 
char *EnterPoint(void)
{
    char *p;
    
    p = (char *) malloc(MAXPOINT);
    
    if (p == NULL)
        assert(0 && "enter point allocation");
    
    strcpy(p, "one");
    
    return p;
}
 
struct route **SearchRoutes(
                struct route *prt, const char *p)
{
    struct route **pprt;
    const int nr = 8;
    int i, n;
    
    pprt = (struct route **) malloc(
        (nr+1)*sizeof(struct route *)
    );
    
    if (pprt == NULL)
        assert(0 && "search routes allocation");
    
    n = 0;
    
    for (i = 0; i < nr; i++)
        if
        (
            strcmp((prt+i)->pointA, p) == 0 ||
            strcmp((prt+i)->pointB, p) == 0
        ) {
            pprt[n] = prt+i;
            n++;
        }
    
    pprt[n] = NULL;
    n++;
    
    if (n < nr+1) {
 
        struct route **pp;
        
        pp = (struct route **) realloc(
            pprt, n*sizeof(struct route *)
        );
    
        if (pp == NULL)
            assert(0 && "search routes reallocation");
        
        pprt = pp;
    
    }
    
    return pprt;
}
 
void PrintRoutes(struct route **ppfrt)
{
    if (*ppfrt == NULL) {
    
        printf("there is no any route found" "\n");
        
        return;
    
    }
    
    while (*ppfrt != NULL) {
 
        printf("%3d: %s, %s" "\n",
            (*ppfrt)->num, (*ppfrt)->pointA,
            (*ppfrt)->pointB);
        
        ppfrt++;
    
    }
}
0
AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
17.03.2010, 18:16  [ТС] #3
accept, спасибо, но такое решение я пока вряд ли пойму, тут даже прототипы функций мы еще в такой форме не проходили=(((
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
18.03.2010, 07:59 #4
тут, в основном, момент с выделением памяти под структуры
чтобы список не делать, я заюзал массив структур, заканчивающихся нулевым указателем
а assert'ы стопорят программу и показывают строку

Добавлено через 2 часа 48 минут
вернее там список указателей на найденные структуры, завершающийся нулевым указателем
структуры-то там заданы из условия
0
AK_U
0 / 0 / 0
Регистрация: 03.02.2010
Сообщений: 22
18.03.2010, 11:03  [ТС] #5
ага, понятно, у меня вот в этом еще вопрос:
C++
1
2
3
4
struct route **SearchRoutes(struct route *, const char *);
void PrintRoutes(struct route **);
 
struct route **ppfrt;
Что делают **, и зачем в прототипе писать struct, это от С отсталось?
0
accept
4823 / 3244 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
18.03.2010, 11:15 #6
это на C, на С++ по-другому всё
но оно пойдёт на C++, так как написано в C89

она ищет routes в списке и, когда находит один, записывает его адрес в массив адресов
после всех таких адресов ставит NULL (тоже адрес)
а потом вывод эти найденные читает из массива адресов
и вытаскивает через эти адресы значения из структур

то есть структуры лежат в одном месте, адресы найденных в другом месте
но адресы найденных - это адресы тех, которые вместе (в одном ряде)
просто среди них нет адресов структур, которые не подходят
0
18.03.2010, 11:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2010, 11:15
Привет! Вот еще темы с ответами:

Не могу выполнить задание - C++
очень нужна помощь с заданием.... Не могу сделать... Ввести с клавиатуры числа x, E . Последовательность a(1),a(2)....a(n)...

Помогите выполнить задание - C++
1.Дан одномерный массив, состоящий из N вещественных элементов. 1.1.Найти минимальный положительный элемент. 1.2.Вычислить произведение...

Обработка текстовых файлов - C++
Помогите написать программу для заданного файла удалить все строки, яки начинаются с &quot;*&quot;. Результат сохранить в том же файли. ...

Обработка текстовых файлов - C++
Помогите, пожалуйста, создать программу для записи данных в текстовий файл и чтение с него. Запись оформить в цикле. Ввести не менее 10...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru