Выдает ошибку - C (СИ) (147993)
Формулировка задачи:
Всем привет .Помогите разобраться. Почему выдает ошибку на строке 17
#include <stdio.h> #include <io.h> #include <conio.h> #include <iostream> struct TZap { char FIO[30]; double s_b, mat, xum, inf, fiz, gr, god; } Zap; int size = sizeof(TZap); FILE *Fz, *Ft; char File_Zap[] = "zapisi.dat"; char File_Rez[] = "rezult.txt"; void Out(TZap); void main() { ' здесь ошибка int kod, D_f, i = 0, j, kol; double s_b, mat, xum, inf, fiz, gr, god; long len; TZap st, *mas_Z; Ft = fopen(File_Rez, "w"); while (true) { puts("\n Create - 1\n Add - 2\n View - 3\n Sort - 4\n EXIT - 0"); scanf("%d", &kod); switch (kod) { case 1: if ((Fz = fopen(File_Zap, "wb")) == NULL) { puts("\n Create ERROR!"); return; } fclose(Fz); printf("\n Create New File %s !\n", File_Zap); break; case 2: Fz = fopen(File_Zap, "ab"); printf("\n F.I.O. - "); fflush(stdin); gets(Zap.FIO); printf(" God rozdeniya - "); fflush(stdin); scanf("%lf", &Zap.god); printf(" Nomer gruppi - "); scanf("%lf", &Zap.gr); printf(" Fizika - "); scanf("%lf", &Zap.fiz); printf(" Matematika - "); scanf("%lf", &Zap.mat); printf(" Informatika - "); scanf("%lf", &Zap.inf); printf(" Xumuya - "); scanf("%lf", &Zap.xum); Zap.s_b = (Zap.fiz + Zap.mat + Zap.inf + Zap.xum) / 4; fwrite(&Zap, size, 1, Fz); fclose(Fz); break; case 3: if ((Fz = fopen(File_Zap, "rb")) == NULL) { puts("\n Open ERROR!"); return; } // printf("\n\t —-----------------— Informations —-------------------\n"); printf("\n\t FIO , god ,nomer gr, fiz , mat , inf , xum ,sredball\n"); // fprintf(Ft, "\n\t —-----------------— Informations —-------------------"); while (1) { if (!fread(&Zap, size, 1, Fz)) break; Out(Zap); } fclose(Fz); break; case 4: Fz = fopen(File_Zap, "rb"); D_f = fileno(Fz); len = filelength(D_f); kol = len / size; mas_Z = new TZap[kol]; // for (i = 0; i < kol; i++) fread((mas_Z + i), size, 1, Fz); fclose(Fz); printf("\n\t---— S O R T —---\n"); fprintf(Ft, "\n\t---— S O R T —---\n"); for (i = 0; i < kol - 1; i++) if ((mas_Z[i].FIO[0] == 'A') && ((mas_Z[i].mat == 8) || (mas_Z[i].mat == 9))) { } for (i = 0; i < kol; i++) Out(mas_Z[i]); delete[]mas_Z; break; case 0: fclose(Ft); return; } } } void Out(TZap z) { printf("\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); fprintf(Ft, "\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); }
Решение задачи: «Выдает ошибку»
textual
Листинг программы
#include <stdio.h> #include <io.h> #include <conio.h> #include <iostream> struct TZap { char FIO[30]; double s_b, mat, xum, inf, fiz, gr, god; } Zap; int size = sizeof(TZap); FILE *Fz, *Ft; char File_Zap[] = "zapisi.dat"; char File_Rez[] = "rezult.txt"; void Out(TZap); int main() { int kod, D_f, i = 0, kol; long len; TZap *mas_Z; Ft = fopen(File_Rez, "w"); while (true) { puts("\n Create - 1\n Add - 2\n View - 3\n Sort - 4\n EXIT - 0"); scanf("%d", &kod); switch (kod) { case 1: if ((Fz = fopen(File_Zap, "wb")) == NULL) { puts("\n Create ERROR!"); return 0; } fclose(Fz); printf("\n Create New File %s !\n", File_Zap); break; case 2: Fz = fopen(File_Zap, "ab"); printf("\n F.I.O. - "); fflush(stdin); gets(Zap.FIO); printf(" God rozdeniya - "); fflush(stdin); scanf("%lf", &Zap.god); printf(" Nomer gruppi - "); scanf("%lf", &Zap.gr); printf(" Fizika - "); scanf("%lf", &Zap.fiz); printf(" Matematika - "); scanf("%lf", &Zap.mat); printf(" Informatika - "); scanf("%lf", &Zap.inf); printf(" Xumuya - "); scanf("%lf", &Zap.xum); Zap.s_b = (Zap.fiz + Zap.mat + Zap.inf + Zap.xum) / 4; fwrite(&Zap, size, 1, Fz); fclose(Fz); break; case 3: if ((Fz = fopen(File_Zap, "rb")) == NULL) { puts("\n Open ERROR!"); return 0; } // printf("\n\t —-----------------— Informations —-------------------\n"); printf("\n\t FIO , god ,nomer gr, fiz , mat , inf , xum ,sredball\n"); // fprintf(Ft, "\n\t —-----------------— Informations —-------------------"); while (1) { if (!fread(&Zap, size, 1, Fz)) break; Out(Zap); } fclose(Fz); break; case 4: Fz = fopen(File_Zap, "rb"); D_f = fileno(Fz); len = filelength(D_f); kol = len / size; mas_Z = new TZap[kol]; // for (i = 0; i < kol; i++) fread((mas_Z + i), size, 1, Fz); fclose(Fz); printf("\n\t---— S O R T —---\n"); fprintf(Ft, "\n\t---— S O R T —---\n"); for (i = 0; i < kol - 1; i++) if ((mas_Z[i].FIO[0] == 'A') && ((mas_Z[i].mat == 8) || (mas_Z[i].mat == 9))) { } for (i = 0; i < kol; i++) Out(mas_Z[i]); delete[]mas_Z; break; case 0: fclose(Ft); return 0; } } } void Out(TZap z) { printf("\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); fprintf(Ft, "\n %20s , %6.0lf , %6.0lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf , %6.3lf", z.FIO, z.god, z.gr, z.fiz, z.mat, z.inf, z.xum, z.s_b); }
Объяснение кода листинга программы
- Структура данных TZap содержит поля: FIO (30 символов), s_b, mat, xum, inf, fiz, gr, god (все числовые).
- Переменная Zap является экземпляром структуры TZap.
- Переменная size содержит размер структуры TZap в байтах.
- Переменная Ft инициализируется как указатель на файл, в который будут записываться результаты.
- Переменная File_Zap содержит имя файла, в котором хранятся данные.
- Переменная File_Rez содержит имя файла, в который будут записываться результаты.
- Функция Out() выводит данные из структуры TZap в формате: ФИО, god, gr, fiz, mat, inf, xum, s_b.
- В цикле while (true) предлагается выбрать действие: создание нового файла (1), добавление записи в файл (2), просмотр записей в файле (3), сортировка записей в файле (4), выход из программы (0).
- Если выбрано действие 2, то происходит запись данных в файл. Для этого используется функция scanf() для считывания данных в поля структуры Zap.
- Если выбрано действие 3, то происходит чтение данных из файла и их вывод на экран с помощью функции Out().
- Если выбрано действие 4, то происходит сортировка записей в файле по определенному условию.
- Для работы с динамическим массивом используется оператор new для выделения памяти под массив структур TZap.
- В цикле for происходит чтение данных из файла в массив структур TZap.
- После выполнения всех действий, файл закрывается с помощью функции fclose().
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д