Выдает ошибку - 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);
}

Объяснение кода листинга программы

  1. Структура данных TZap содержит поля: FIO (30 символов), s_b, mat, xum, inf, fiz, gr, god (все числовые).
  2. Переменная Zap является экземпляром структуры TZap.
  3. Переменная size содержит размер структуры TZap в байтах.
  4. Переменная Ft инициализируется как указатель на файл, в который будут записываться результаты.
  5. Переменная File_Zap содержит имя файла, в котором хранятся данные.
  6. Переменная File_Rez содержит имя файла, в который будут записываться результаты.
  7. Функция Out() выводит данные из структуры TZap в формате: ФИО, god, gr, fiz, mat, inf, xum, s_b.
  8. В цикле while (true) предлагается выбрать действие: создание нового файла (1), добавление записи в файл (2), просмотр записей в файле (3), сортировка записей в файле (4), выход из программы (0).
  9. Если выбрано действие 2, то происходит запись данных в файл. Для этого используется функция scanf() для считывания данных в поля структуры Zap.
  10. Если выбрано действие 3, то происходит чтение данных из файла и их вывод на экран с помощью функции Out().
  11. Если выбрано действие 4, то происходит сортировка записей в файле по определенному условию.
  12. Для работы с динамическим массивом используется оператор new для выделения памяти под массив структур TZap.
  13. В цикле for происходит чтение данных из файла в массив структур TZap.
  14. После выполнения всех действий, файл закрывается с помощью функции fclose().

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.778 из 5
Похожие ответы