Программа не работает на Windows 7 - C (СИ)

Узнай цену своей работы

Формулировка задачи:

при ns 3 программа нормально работала, как только поменял 3 на 7 Windows выдает ошибку. помогите, пожалуйста,исправить.
#include<stdio.h>
#include<conio.h>
#define ns 7
#define nfio 15
typedef struct
{
        int day, month,year;
}date;
typedef struct
{
        char fio[nfio], pol, obr, address, stip;
        date dater;
        int kb;
        float ocen[5],sum;
        }stud;
int main()
{
stud group[ns], group1[ns],group2[ns];
int i,j,sizest,*n;
float sumgr,balgr;
FILE *fp;
char *filename="D:\\student\\proba.txt";
sizest=sizeof(group);
if((fp=fopen( filename,"w"))==NULL)
{
   printf("Oshibka");
   getch();
   return 0;
}
printf("File otkrit dlya vvoda dannix\n");
for(i=0;i<=ns-1;i++)
{
         printf("Vvedite dannye o studente\n");
         scanf("%s %c %c %c %c %i %i %i",group[i].fio,&group[i].pol,
         &group[i].obr,&group[i].address,&group[i].stip,&group[i].dater.day,
         &group[i].dater.month,&group[i].dater.year);
         printf("Vvedite ocenki i kol-vo ballov:\n");
         for(j=0;j<=4;j++) scanf("%f",&group[i].ocen[j]);
         scanf("%i",&group[i].kb);
         }    
for(i=0;i<=ns-1;i++)
fwrite(&group,sizest,3,fp);
printf("OK");
fclose(fp);
 
if((fp=fopen(filename,"r"))==NULL)
{
   printf("Oshibka");
   getch();
   return 0;
}
sumgr=0;
printf("Dannye iz fila:\n");
fread(&group1,sizest,3,fp);
*n=0;
for (i=0;i<=ns-1;i++)
{         
 
 group1[i].sum=0;
 for (j=0;j<5;j++) group1[i].sum+=group1[i].ocen[j];
 sumgr=sumgr+group1[i].sum;
group2[*n]=group1[i];
*n=*n+1;}
for (i=0;i<=ns-1;i++)
{       
         printf("%s %c %c %c %c %i%i%i",group1[i].fio,group1[i].pol,
         group1[i].obr,group1[i].address,group1[i].stip,group1[i].dater.day,
         group1[i].dater.month,group1[i].dater.year);
         for(j=0;j<=4;j++) printf("%f",group1[i].ocen[j]);
         printf("%i\n",group1[i].kb);
         }
balgr=sumgr/(ns*5);
printf("sredni ball gruppi %f\n",balgr);
printf("kolichestvo zapisei %i",*n);         
fclose(fp);                  
getch();
return 0;
}

Решение задачи: «Программа не работает на Windows 7»

textual
Листинг программы
#include <stdio.h>
#include <conio.h>
#define ns 7
#define nfio 15
 
typedef struct
{
   int day, month, year;
}  date;
 
typedef struct
{
   char fio[nfio], pol, obr, address, stip;
   date dater;
   int kb;
   float ocen[5], sum;
}  stud;
 
int main()
{
   stud group[ns], group1[ns];
   int i, j, sizest, n;
   float sumgr, balgr;
   FILE* fp;
   char* filename = "proba.txt";
   sizest = sizeof(stud);
   if ((fp = fopen(filename, "wb")) == NULL)
   {
      printf("Oshibka");
      getch();
      return 0;
   }
   printf("File otkrit dlya vvoda dannix\n");
   for (i = 0; i < ns; i++)
   {
      printf("Vvedite dannye o studente\n");
      scanf("%s %c %c %c %c %i %i %i", group[i].fio, &group[i].pol,
            &group[i].obr, &group[i].address, &group[i].stip, &group[i].dater.day,
            &group[i].dater.month, &group[i].dater.year);
      printf("Vvedite ocenki i kol-vo ballov:\n");
      for (j = 0; j < 5; j++)
      {
         scanf("%f", &group[i].ocen[j]);
      }
      scanf("%i", &group[i].kb);
   }
 
   fwrite(&group, sizest, ns, fp);
 
   printf("OK");
   fclose(fp);
 
   if ((fp = fopen(filename, "rb")) == NULL)
   {
      printf("Oshibka");
      getch();
      return 0;
   }
   sumgr = 0;
   printf("Dannye iz fila:\n");
   fread(&group1, sizest, ns, fp);
   n = 0;
   for (i = 0; i < ns; i++)
   {
 
      group1[i].sum = 0;
      for (j = 0; j < 5; j++)
      {
         group1[i].sum += group1[i].ocen[j];
      }
      sumgr = sumgr + group1[i].sum;
      n++;
   }
   for (i = 0; i < ns; i++)
   {
      printf("%s %c %c %c %c %i%i%i ", group1[i].fio, group1[i].pol,
             group1[i].obr, group1[i].address, group1[i].stip, group1[i].dater.day,
             group1[i].dater.month, group1[i].dater.year);
      for (j = 0; j < 5; j++)
      {
         printf("%.1f ", group1[i].ocen[j]);
      }
      printf("%i\n", group1[i].kb);
   }
   balgr = sumgr / (ns * 5);
   printf("sredni ball gruppi %f\n", balgr);
   printf("kolichestvo zapisei %i", n);
   fclose(fp);
   getch();
   return 0;
}

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

  1. Представлен код на языке C.
  2. Задача программы - работа с файлом, содержащим данные о студентах.
  3. Код открывает файл proba.txt для записи данных (режим wb).
  4. В цикле запрашиваются и записываются данные о каждом студенте: ФИО, пол, курс, адрес, специальность, дата рождения, количество баллов и средний балл.
  5. Затем код открывает файл proba.txt для чтения данных (режим rb).
  6. В цикле выводятся данные о каждом студенте, включая ФИО, пол, курс, адрес, специальность, дату рождения, количество баллов.
  7. Вычисляется средний балл группы.
  8. Закрывается файл proba.txt.
  9. В коде используется тип данных date для хранения даты рождения студента.
  10. Используется оператор getch() для приостановки выполнения программы и вывода сообщения OK.
  11. В коде используется библиотека stdio.h для ввода-вывода данных.
  12. В коде используется библиотека conio.h для работы с клавиатурой и приостановки выполнения программы.
  13. Используется оператор scanf() для ввода данных о студенте.
  14. Используется оператор printf() для вывода данных на экран.
  15. В коде используются переменные ns и nfio для определения размера массивов.
  16. В коде используется тип данных char для хранения строковых значений.
  17. В коде используется тип данных int для хранения целочисленных значений.
  18. В коде используется тип данных float для хранения числовых значений.
  19. Используется функция fopen() для открытия файла.
  20. Используется функция fclose() для закрытия файла.
  21. Используется функция fread() для чтения данных из файла.
  22. Используется функция fwrite() для записи данных в файл.

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


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

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

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