Программа не работает на 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; }
Объяснение кода листинга программы
- Представлен код на языке C.
- Задача программы - работа с файлом, содержащим данные о студентах.
- Код открывает файл
proba.txt
для записи данных (режимwb
). - В цикле запрашиваются и записываются данные о каждом студенте: ФИО, пол, курс, адрес, специальность, дата рождения, количество баллов и средний балл.
- Затем код открывает файл
proba.txt
для чтения данных (режимrb
). - В цикле выводятся данные о каждом студенте, включая ФИО, пол, курс, адрес, специальность, дату рождения, количество баллов.
- Вычисляется средний балл группы.
- Закрывается файл
proba.txt
. - В коде используется тип данных
date
для хранения даты рождения студента. - Используется оператор
getch()
для приостановки выполнения программы и вывода сообщенияOK
. - В коде используется библиотека
stdio.h
для ввода-вывода данных. - В коде используется библиотека
conio.h
для работы с клавиатурой и приостановки выполнения программы. - Используется оператор
scanf()
для ввода данных о студенте. - Используется оператор
printf()
для вывода данных на экран. - В коде используются переменные
ns
иnfio
для определения размера массивов. - В коде используется тип данных
char
для хранения строковых значений. - В коде используется тип данных
int
для хранения целочисленных значений. - В коде используется тип данных
float
для хранения числовых значений. - Используется функция
fopen()
для открытия файла. - Используется функция
fclose()
для закрытия файла. - Используется функция
fread()
для чтения данных из файла. - Используется функция
fwrite()
для записи данных в файл.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д