4 / 4 / 3
Регистрация: 10.10.2013
Сообщений: 189
1

Описать структуру с именем Plane

14.12.2013, 18:09. Показов 959. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здраствуйте у меня усть проблемка с стректурами у меня усть структура содержащая информацию о трех видах самолетову которых есть общая часть и вариативная
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
typedef struct plane
{
    enum itemtype {gruz, pasag,prom};
    union
    {
        typedef struct 
        {
            int volume;//объем-грузового отсека
            float gruzik;// грузоподемность
        }gruz;
        typedef struct 
        {
            int kol;//количество мест
        }pasag;
        typedef struct pr
        {
            float gruzik;// грузоподемность
            char spez[100];//специализация
        }prom;
        
    }info;
    char marka[100];//модель самолета
    int piople_obsl;//количество людей обслуживания 
    int daln;//дальность полета без дозоправки 
    float size[3];//размеры самолета [0]-длина;[1]-размах крыльев [2]-высота 
}information;
и вот мне надо вывести информацию с текстового файла в котором она хранится
пока я вывожу информацию с общей части все норм но когда начинаеться вариативная компилятор пишет "выражение должно иметь тип класса"
C
1
2
3
4
5
6
7
8
9
10
11
if(chislo==2)
        {
            FILE *fp;
            fp=fopen("info_pasag.txt","r");
            printf("Пасажирские самолеты\n\n");
            while (!feof(fp))
            {
                fprintf(fp,"название-%s ;\n дальность полета без дозоправки %i;\nдлина %f ,размах крыльев %f, высота %f;\n людей обслуживания %i;количество мест %i.\n ",sam.marka,&sam.daln,&sam.size[0],&sam.size[1],&sam.size[2],&sam.piople_obsl,&sam.pasag.kol);
            }
            fclose(fp);
        }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.12.2013, 18:09
Ответы с готовыми решениями:

Описать структуру с именем ZNAK
Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак Зодиака; •...

Описать структуру с именем Train
Описать структуру с именем TRAIN, содержащую следующие поля: название пункта назначения; номер...

Описать структуру с именем ZNAK
struct znak { string name; string zodiac; int bday;

Описать структуру с именем WORKER
Помогите написать программку на си!! Описать структуру с именем WORKER. содержащую следующие поля...

10
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
14.12.2013, 18:27 2
Немного не по теме. А для чего использовать union? Экономишь память?
0
4 / 4 / 3
Регистрация: 10.10.2013
Сообщений: 189
14.12.2013, 18:46  [ТС] 3
а по какой теме ?
0
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
14.12.2013, 20:00 4
Цитата Сообщение от Schutskiy Denic Посмотреть сообщение
а по какой теме ?
Ну понятно. Приборы 200 и все такое.

Для чего ты используешь объединения, вместо структур? Какая от этого практическая польза? Ты экономишь таким способом память? Просто интересно стало.
0
4 / 4 / 3
Регистрация: 10.10.2013
Сообщений: 189
14.12.2013, 20:09  [ТС] 5
нет просто таково условие задания
0
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
14.12.2013, 20:27 6
В общем, сохраняй лучше в бинарном режиме функцией fwrite. Одну структуру сохранил, прочитал fread, записал прочитанное во временную структуру и вывел на печать.
0
4 / 4 / 3
Регистрация: 10.10.2013
Сообщений: 189
14.12.2013, 20:30  [ТС] 7
тоесть считывать каждое значение по отдельности и сразу выводить?
0
15 / 15 / 7
Регистрация: 20.11.2013
Сообщений: 92
14.12.2013, 20:41 8
Ну зачем по отдельности. fwrite сохранит целиком структуру в файл. Она там будет у тебя одна. Функция fread прочитает одну структуру из файла и сохранит прочитанные значения в заранее созданную тобой структуру. Потом функцией printf распечатаешь каждый элемент структуры.
0
4 / 4 / 3
Регистрация: 10.10.2013
Сообщений: 189
14.12.2013, 20:50  [ТС] 9
у меня вопрос,а можно вот распечатать только некоторую информацию с текстового файла?
вот например мне надо найти самолеты в которых количество мест от 100 до 300 и вывести название самолета и количество мест.
можно такое сделать?

Добавлено через 35 секунд
это делаеться одним ифом с двумя условиями?
0
419 / 418 / 167
Регистрация: 28.11.2010
Сообщений: 1,183
15.12.2013, 12:00 10
Весь код без проблемного участка (закомментируй) приведи и еще приведи задание.
0
4 / 4 / 3
Регистрация: 10.10.2013
Сообщений: 189
15.12.2013, 12:37  [ТС] 11
у меня есть компания здающая в аренду самолеты трех типов пасажирсетах хронитьекий грузовой и промышленный(пожарный и сельско хозяйственный .
информация о самолетах хронится в текстовом файле и надо сделать:
1)добавить информацию о самолетах
2)редактировать информацию
3)просмотр информации
4)поиск по критерию
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
# include <stdio.h>
#include <locale.h>
#include <stdlib.h>
 
typedef struct plane
{
    enum itemtype {gruz, pasag,prom};
    union
    {
        typedef struct 
        {
            int volume;//объем-грузового отсека
            float gruzik;// грузоподемность
        }gruz; 
        typedef struct 
        {
            int kol;//количество мест
        }pasag;
        typedef struct pr
        {
            float gruzik;// грузоподемность
            char spez[100];//специализация
        }prom;
        
    }info;
    char marka[100];//модель самолета
    int piople_obsl;//количество людей обслуживания 
    int daln;//дальность полета без дозоправки 
    float size[3];//размеры самолета [0]-длина;[1]-размах крыльев [2]-высота 
}information;
 
#include"bibl.h"
 
void main()
{
    int chislo;
    int min,max;
    information sam;
    setlocale(LC_ALL,"Rus");   
    printf("Если вы хотите добавить информацию о какомто самолете нажмите 1.\n");
    printf("Если вы хотите редактировать информацию о какомто самолете нажмите 2.\n");
    printf("Если вы хотите просмотреть весь каталог самолетов и информацию о них нажмите 3.\n");
    printf("Если вы хотите искать по какомуто критерию самолету  нажмите 4.\n\n\n");
    scanf("%i",&chislo);
//дозапись
    if (chislo==1)
    {
        printf("Если вы хотите дозописать информацию о промышленных самолетах нажмите 1.\n");
        printf("Если вы хотите дозописать информацию о пасажирских  самолетах нажмите 2.\n");
        printf("Если вы хотите дозописать информацию о грузовых самолетах нажмите 3.\n");
        scanf("%i",&chislo);
        if (chislo!=1&&chislo!=2&&chislo!=3)
            printf("Вы выбрали раздел которого не существует.\n\n");
    //промышленный
        if(chislo==1)
        {
            FILE *fp;
            fp=fopen("info_prom.txt","a");
            printf("введите название самолета\n");
            gets(sam.marka);
            printf("дальность полета\n");
            scanf("%f",&sam.daln);
            printf("введите длину,размах крыльев и высоту самолета\n");
            scanf("%f",&sam.size[0]);
            scanf("%f",&sam.size[1]);
            scanf("%f",&sam.size[2]);
            printf("введите количество людей обслуживания\n");
            scanf("%i",&sam.piople_obsl);
            printf("введите грузоподъеность\n");
            scanf("%f",&sam.prom.gruzik);
            printf("введите специализацию\n");
            gets(&sam.gruz.volume);
            fclose(fp);
        }
    //пасажирский
        if(chislo==2)
        {
            FILE *fp;
            fp=fopen("info_pasag.txt","a");
            printf("введите название самолета\n");
            gets(sam.marka);
            printf("дальность полета\n");
            scanf("%f",&sam.daln);
            printf("введите длину,размах крыльев и высоту самолета\n");
            scanf("%f",&sam.size[0]);
            scanf("%f",&sam.size[1]);
            scanf("%f",&sam.size[2]);
            printf("введите количество людей обслуживания\n");
            scanf("%i",&sam.piople_obsl);
            printf("введите количество пасажирских мест\n");
            scanf("%i",&sam.pasag.kol);
            fclose(fp);
        }
    //грузовой
        if(chislo==3)
        {
            FILE *fp;
            fp=fopen("info_gruz.txt","r");
            printf("введите название самолета\n");
            gets(sam.marka);
            printf("дальность полета\n");
            scanf("%f",&sam.daln);
            printf("введите длину,размах крыльев и высоту самолета\n");
            scanf("%f",&sam.size[0]);
            scanf("%f",&sam.size[1]);
            scanf("%f",&sam.size[2]);
            printf("введите количество людей обслуживания\n");
            scanf("%i",&sam.piople_obsl);
            printf("введите грузоподъеность\n");
            scanf("%f",&sam.gruz.gruzik);
            printf("введите объем грузового отсека\n");
            scanf("%i",&sam.gruz.volume);
            fclose(fp);
        }
    }
//редактировать
    if(chislo==2)
    {
        printf("Если вы хотите редактировать информацию о промышленных самолетах нажмите 1.\n");
        printf("Если вы хотите редактировать информацию о пасажирских самолетах нажмите 2.\n");
        printf("Если вы хотите редактировать информацию о грузовых самолетах нажмите 3.\n");
        scanf("%i",&chislo);
        if (chislo!=1&&chislo!=2&&chislo!=3)
            printf("Вы выбрали раздел которого не существует.\n\n");
        if (chislo==1)
        {
 
        }
        if (chislo==2)
        {
 
        }
        if (chislo==3)
        {
 
        }
    }
/*
// полный каталог
    if(chislo==3)
    {
        printf("Если вы хотите узнать информацию о промышленных самолетах нажмите 1.\n");
        printf("Если вы хотите узнать информацию о пасажирских самолетах нажмите 2.\n");
        printf("Если вы хотите узнать информацию о грузовых самолетах нажмите 3.\n");
        printf("Если вы хотите узнать информацию о всех свмолетах нажмите 4.\n\n");
        scanf("%i",&chislo);
//промышленный
        if (chislo==1)
        {
            FILE *fp;
            fp=fopen("info_prom.txt","r");
            printf("Промышленные самолеты\n\n");
            while (!feof(fp))
            {
                fprintf(fp,"название-%s ;\n дальность полета без дозоправки %i ;\nдлина %f размах крыльев %f высота %f;\n людей обслуживания %i;\nгрузоподъемность %f ; специализация %s.\n",sam.marka,&sam.daln,&sam.size[0],&sam.size[1],&sam.size[2],&sam.piople_obsl,&sam.prom.gruzik,sam.prom.spez);
            }
            fclose(fp);
        }
//пасажирский
        if(chislo==2)
        {
            FILE *fp;
            fp=fopen("info_pasag.txt","r");
            printf("Пасажирские самолеты\n\n");
            while (!feof(fp))
            {
                fprintf(fp,"название-%s ;\n дальность полета без дозоправки %i;\nдлина %f ,размах крыльев %f, высота %f;\n людей обслуживания %i;количество мест %i.\n ",sam.marka,&sam.daln,&sam.size[0],&sam.size[1],&sam.size[2],&sam.piople_obsl,&sam.pasag.kol);
            }
            fclose(fp);
        }
//грузовой
        if(chislo==3)
        {
            FILE *fp;
            plane sam;
            fp=fopen("info_gruz.txt","r");
            printf("Грузовые самолеты\n\n");
            while (!feof(fp))
            {
                fprintf(fp,"название-%s ;\n дальность полета без дозоправки %i ;\nдлина %f размах крыльев %f высота %f;\n людей обслуживания %i;грузоподъемность %f ; объем грузового отсека%i. ",sam.marka,&sam.daln,&sam.size[0],&sam.size[1],&sam.size[2],&sam.piople_obsl,&sam.gruz.gruzik,&sam.gruz.volume);
            }
            fclose(fp);
//все самолеты
            if(chislo==4)
            {
                FILE *fp1,*fp2,*fp3;
                printf("Пасажирские самолеты\n\n");
                fp1=fopen("info_pasag.txt","r");
                while (!feof(fp1))
                {
                    fprintf(fp1,"название-%s ;\n дальность полета без дозоправки %i ;\nдлина %f размах крыльев %f высота %f;\n людей обслуживания %i;количество мест %i\n ",sam.marka,&sam.daln,&sam.size[0],&sam.size[1],&sam.size[2],&sam.piople_obsl,&sam.pasag.kol);
                }
                fclose(fp1);
                fp2=fopen("info_prom.txt","r");
                printf("Промышленные самолеты\n\n");
                while (!feof(fp2))
                {
                    fprintf(fp2,"название-%s ;\n дальность полета без дозоправки %i ;\nдлина %f размах крыльев %f высота %f;\n людей обслуживания %i;\nгрузоподъемность %f ; специализация %s.\n ",sam.marka,&sam.daln,&sam.size[0],&sam.size[1],&sam.size[2],&sam.piople_obsl,&sam.prom.gruzik,sam.prom.spez);
                }
                fclose(fp2);
                fp3=fopen("info_gruz.txt","r");
                printf("Грузовые самолеты\n\n");
                while (!feof(fp3))
                {
                    fprintf(fp3,"название-%s ;\n дальность полета без дозоправки %i ;\nдлина %f размах крыльев %f высота %f;\n людей обслуживания %i;\nгрузоподъемность %f ; объем грузового отсека%i. \n",sam.marka,&sam.daln,&sam.size[0],&sam.size[1],&sam.size[2],&sam.piople_obsl,&sam.gruz.gruzik,&sam.gruz.volume);
                }
                fclose(fp3);
        }
        if (chislo!=1&&chislo!=2&&chislo!=3&&chislo!=4)
            printf("Вы выбрали раздел которого не существует.\n\n");
        
 
    }
*/
//поиск по критерию
    if(chislo==4)
    {
        FILE *fp1,*fp2,*fp3;
        fp1=fopen("info_pasag.txt","r");
        fp2=fopen("info_prom.txt","r");
        fp3=fopen("info_gruz.txt","r");
        printf("Если вы хотите найти информацию о дальности полета нажмите 1.\n");
        printf("Если вы хотите найти информацию о количестве людей обслуживания нажмите 2.\n");
        printf("Если вы хотите найти информацию о размерах самолета нажмите 3.\n");
        printf("Если вы хотите найти информацию о количестве пасажирских мест нажмите 4.\n");
        printf("Если вы хотите найти информацию о грузоподъемности самолета нажмите 5.\n");
        printf("Если вы хотите найти информацию о объеме гркзового отсеканажмите 6.\n");
        scanf("%i",&chislo);
        if (chislo!=1&&chislo!=2&&chislo!=3&&chislo!=4&&chislo!=5&&chislo!=6)
            printf("Вы выбрали раздел которого не существует.\n\n");
//
        if (chislo==1)
        {
            printf("Если вы хотите увидеть все самолеты с данным критерием нажмите 1.\n");
            printf("Если вы хотите найти все самолеты с указанным значением данного критерия нажмите 2.\n");
            scanf("%i",&chislo);
            if (chislo!=1&&chislo!=2)
                printf("Вы выбрали раздел которого не существует.\n\n");
            if(chislo==1)
            {
                while (!feof(fp1))
                {
                    fprintf(fp1,"название-%s ;\n дальность полета без дозоправки %i ;\n",sam.marka,&sam.daln);
                }
                while (!feof(fp2))
                {
                    fprintf(fp2,"название-%s ;\n дальность полета без дозоправки %i ;\n",sam.marka,&sam.daln);
                }
                while (!feof(fp3))
                {
                    fprintf(fp3,"название-%s ;\n дальность полета без дозоправки %i ;\n",sam.marka,&sam.daln);
                }
            }
            if(chislo==2)
            {
                printf("введите в каком диапозоне искатьсамолеты \n введите минимальное и максимальное значение дальности полета\n ");
                scanf("%i",&min);
                scanf("%i",&max);
                while (!feof(fp1))
                {
                    if(sam.daln>=min&&sam.daln<=max)
                        fprintf(fp1,"название-%s ;\n дальность полета без дозоправки %i ;\n",sam.marka,&sam.daln);
                }
                while (!feof(fp2))
                {
                    if(sam.daln>=min&&sam.daln<=max)
                        fprintf(fp2,"название-%s ;\n дальность полета без дозоправки %i ;\n",sam.marka,&sam.daln);
                }
                while (!feof(fp3))
                {
                    if(sam.daln>=min&&sam.daln<=max)
                        fprintf(fp3,"название-%s ;\n дальность полета без дозоправки %i ;\n",sam.marka,&sam.daln);
                }
            }
        }
//
        if (chislo==2)
        {
            printf("Если вы хотите увидеть все самолеты с данным критерием нажмите 1.\n");
            printf("Если вы хотите найти все самолеты с указанным значением данного критерия нажмите 2.\n");
            scanf("%i",&chislo);
            if (chislo!=1&&chislo!=2)
                printf("Вы выбрали раздел которого не существует.\n\n");
            if(chislo==1)
            {
                while (!feof(fp1))
                {
                    fprintf(fp1,"название-%s ;\n  людей обслуживания%i ;\n",sam.marka,&sam.piople_obsl);
                }
                while (!feof(fp2))
                {
                    fprintf(fp2,"название-%s ;\n людей обслуживания %i ;\n",sam.marka,&sam.piople_obsl);
                }
                while (!feof(fp3))
                {
                    fprintf(fp3,"название-%s ;\n людей обслуживания %i ;\n",sam.marka,&sam.piople_obsl);
                }
            }
            if(chislo==2)
            {
                printf("введите в каком диапозоне искатьсамолеты \n введите минимальное и максимальное значение дальности полета\n ");
                scanf("%i",&min);
                scanf("%i",&max);
                while (!feof(fp1))
                {
                    if(sam.daln>=min&&sam.daln<=max)
                        fprintf(fp1,"название-%s ;\n людей обслуживания %i ;\n",sam.marka,&sam.piople_obsl);
                }
                while (!feof(fp2))
                {
                    if(sam.daln>=min&&sam.daln<=max)
                        fprintf(fp2,"название-%s ;\n людей обслуживания %i ;\n",sam.marka,&sam.piople_obsl);
                }
                while (!feof(fp3))
                {
                    if(sam.daln>=min&&sam.daln<=max)
                        fprintf(fp3,"название-%s ;\n людей обслуживания %i ;\n",sam.marka,&sam.piople_obsl);
                }
            }
 
        }
        if (chislo==3)
        {
            printf("Если вы хотите увидеть все самолеты с данным критерием нажмите 1.\n");
            printf("Если вы хотите найти все самолеты с указанным значением данного критерия нажмите 2.\n");
            scanf("%i",&chislo);
            if (chislo!=1&&chislo!=2)
                printf("Вы выбрали раздел которого не существует.\n\n");
            if(chislo==1)
            if(chislo==2)
        }
        if (chislo==4)
        {
            printf("Если вы хотите увидеть все самолеты с данным критерием нажмите 1.\n");
            printf("Если вы хотите найти все самолеты с указанным значением данного критерия нажмите 2.\n");
            scanf("%i",&chislo);
            if (chislo!=1&&chislo!=2)
                printf("Вы выбрали раздел которого не существует.\n\n");
            if(chislo==1)
            if(chislo==2)
        }
        if (chislo==5)
        {
            printf("Если вы хотите увидеть все самолеты с данным критерием нажмите 1.\n");
            printf("Если вы хотите найти все самолеты с указанным значением данного критерия нажмите 2.\n");
            scanf("%i",&chislo);
            if (chislo!=1&&chislo!=2)
                printf("Вы выбрали раздел которого не существует.\n\n");
            if(chislo==1)
            if(chislo==2)
        }
        if (chislo==6)
        {
            printf("Если вы хотите увидеть все самолеты с данным критерием нажмите 1.\n");
            printf("Если вы хотите найти все самолеты с указанным значением данного критерия нажмите 2.\n");
            scanf("%i",&chislo);
            if (chislo!=1&&chislo!=2)
                printf("Вы выбрали раздел которого не существует.\n\n");
            if(chislo==1)
            if(chislo==2)
        }
        fclose(fp3);
        fclose(fp2);
        fclose(fp1);
    }
    if (chislo!=1&&chislo!=2&&chislo!=3&&chislo!=4)
        printf("Вы ввели номер функции которой не существует.\n\n");
    system("PAUSE");
}
0
15.12.2013, 12:37
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.12.2013, 12:37
Помогаю со студенческими работами здесь

Описать структуру с именем ZNAK
Описать структуру с именем ZNAK, содержащую следующие поля: • фамилия, имя; • знак зодиака;...

Описать структуру с именем STUDENT
Описать структуру с именем STUDENT, содержащую следующие поля: фамилия и инициалы, номер группы,...

Описать структуру с именем PRICE
Описать структуру с именем PRICE, содержащую следующие поля: 1. название товара; 2. название...

Описать структуру с именем ZNAK
1. Описать структуру с именем ZNAK, содержащую следующие поля: -фамилия, имя; -знак Зодиака;...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru