I
IaElka
Написать программу обработки файла типа запись, содержащую следую-щие пункты меню: «Создание», «Просмотр», «Коррекция» (добавление новых данных или редактирование старых), «Решение индивидуального задания».
Каждая запись должна содержать следующую информацию о студентах:
– фамилия и инициалы;
– год рождения;
– номер группы;
– оценки за семестр: по физике, математике, информатике, химии;
– средний балл.
Организовать ввод исходных данных, средний балл рассчитать по введенным оценкам.
Содержимое всего файла и результаты решения индивидувльного задания записать в текстовый файл.
ИНДИВИД. ЗАДАНИЕ:Вычислить общий средний балл всех студентов и распечатать список студентов интересующей вас группы, имеющих средний балл выше общего среднего бал-ла.
Подскажите, как исправить ошибку при нахождении среднего балла?...считается только целая часть. А как сделать, чтобы и дробная была.?
#include<conio.h>
#include<stdio.h>
#include<io.h>
struct TZap{
char FIO[30];
int DataRojd;
int NomGr;
int Fizika;
int Math;
int Inform;
int Himia;
double s_b;
}Zap;
int size = sizeof(TZap);
FILE *Fz, *Ft;
char File_Zap[]="zapisi.dat";
char File_Rez[]="rezult.txt";
void Out(TZap);
void main()
{
clrscr();
int kod, D_f,i=0,j,kol;
long len;
TZap st, *mas_Z;
Ft = fopen(File_Rez, "w");
while(1){
puts("\nSOZDANIE-1\n-REDAKTIROVANIE-2\nPROSMOTR-3");
puts("-RESHENIE INDIVIDUALNOGO ZADANIA-4\nVIHOD-0");
scanf("%d",&kod);
switch(kod){
case 1:
if((Fz=fopen(File_Zap, "wb"))==NULL){
puts("\nCREATE ERROR!");
return;
}
fclose(Fz);
printf("\nCreate New File %s!\n",File_Zap);
break;
case 2:
Fz=fopen(File_Zap,"ab");
printf("\nF.I.O. - ");
fflush(stdin);
gets(Zap.FIO);
printf("\nData rojdenia - ");
scanf("%d",&Zap.DataRojd);
printf("\nNomer gruppi - ");
scanf("%d",&Zap.NomGr);
printf("\nOcenka po fizike - ");
scanf("%d",&Zap.Fizika);
printf("\nOcenka po matematike - ");
scanf("%d",&Zap.Math);
printf("\nOcenka po informatike - ");
scanf("%d",&Zap.Inform);
printf("\nOcenka po himii - ");
scanf("%d",&Zap.Himia);
Zap.s_b=(Zap.Fizika+Zap.Math+Zap.Inform+Zap.Himia)/4;
fwrite(&Zap,size,1,Fz);
fclose(Fz);
break;
case 3:
if((Fz=fopen(File_Zap,"rb"))==NULL){
puts("\nOPEN ERROR!");
return;
}
printf("\n\t------INFORMATIONS------");
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------SORT------");
fprintf(Ft,"\n\t------SORT------");
for(i=0;i<kol-1;i++)
for(j=i+1;j<kol;j++)
if(mas_Z.s_b>mas_Z[j].s_
{
st=mas_Z;
mas_Z=mas_Z[j];
mas_Z[j]=st;
}
for(i=0;i<kol;i++)
Out(mas_Z);
delete []mas_Z;
break;*/
case 0:
fclose(Ft);
return;
}
}
}
void Out(TZap z)
{
printf("\n%20s,%d,%6d,%d,%d,%d,%d,%5.2lf.",z.FIO,z.DataRojd,z.NomGr,z.Fizika,z.Math,z.Inform,z.Himia,z.s_:ya_lamo:;
fprintf(Ft,"\n%20s,%d,%d,%d,%d,%d,%d,%5.2lf.",z.FIO,z.DataRojd,z.NomGr,z.Fizika,z.Math,z.Inform,z.Himia,z.s_B);
}
Каждая запись должна содержать следующую информацию о студентах:
– фамилия и инициалы;
– год рождения;
– номер группы;
– оценки за семестр: по физике, математике, информатике, химии;
– средний балл.
Организовать ввод исходных данных, средний балл рассчитать по введенным оценкам.
Содержимое всего файла и результаты решения индивидувльного задания записать в текстовый файл.
ИНДИВИД. ЗАДАНИЕ:Вычислить общий средний балл всех студентов и распечатать список студентов интересующей вас группы, имеющих средний балл выше общего среднего бал-ла.
Подскажите, как исправить ошибку при нахождении среднего балла?...считается только целая часть. А как сделать, чтобы и дробная была.?
#include<conio.h>
#include<stdio.h>
#include<io.h>
struct TZap{
char FIO[30];
int DataRojd;
int NomGr;
int Fizika;
int Math;
int Inform;
int Himia;
double s_b;
}Zap;
int size = sizeof(TZap);
FILE *Fz, *Ft;
char File_Zap[]="zapisi.dat";
char File_Rez[]="rezult.txt";
void Out(TZap);
void main()
{
clrscr();
int kod, D_f,i=0,j,kol;
long len;
TZap st, *mas_Z;
Ft = fopen(File_Rez, "w");
while(1){
puts("\nSOZDANIE-1\n-REDAKTIROVANIE-2\nPROSMOTR-3");
puts("-RESHENIE INDIVIDUALNOGO ZADANIA-4\nVIHOD-0");
scanf("%d",&kod);
switch(kod){
case 1:
if((Fz=fopen(File_Zap, "wb"))==NULL){
puts("\nCREATE ERROR!");
return;
}
fclose(Fz);
printf("\nCreate New File %s!\n",File_Zap);
break;
case 2:
Fz=fopen(File_Zap,"ab");
printf("\nF.I.O. - ");
fflush(stdin);
gets(Zap.FIO);
printf("\nData rojdenia - ");
scanf("%d",&Zap.DataRojd);
printf("\nNomer gruppi - ");
scanf("%d",&Zap.NomGr);
printf("\nOcenka po fizike - ");
scanf("%d",&Zap.Fizika);
printf("\nOcenka po matematike - ");
scanf("%d",&Zap.Math);
printf("\nOcenka po informatike - ");
scanf("%d",&Zap.Inform);
printf("\nOcenka po himii - ");
scanf("%d",&Zap.Himia);
Zap.s_b=(Zap.Fizika+Zap.Math+Zap.Inform+Zap.Himia)/4;
fwrite(&Zap,size,1,Fz);
fclose(Fz);
break;
case 3:
if((Fz=fopen(File_Zap,"rb"))==NULL){
puts("\nOPEN ERROR!");
return;
}
printf("\n\t------INFORMATIONS------");
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------SORT------");
fprintf(Ft,"\n\t------SORT------");
for(i=0;i<kol-1;i++)
for(j=i+1;j<kol;j++)
if(mas_Z.s_b>mas_Z[j].s_

st=mas_Z;
mas_Z=mas_Z[j];
mas_Z[j]=st;
}
for(i=0;i<kol;i++)
Out(mas_Z);
delete []mas_Z;
break;*/
case 0:
fclose(Ft);
return;
}
}
}
void Out(TZap z)
{
printf("\n%20s,%d,%6d,%d,%d,%d,%d,%5.2lf.",z.FIO,z.DataRojd,z.NomGr,z.Fizika,z.Math,z.Inform,z.Himia,z.s_:ya_lamo:;
fprintf(Ft,"\n%20s,%d,%d,%d,%d,%d,%d,%5.2lf.",z.FIO,z.DataRojd,z.NomGr,z.Fizika,z.Math,z.Inform,z.Himia,z.s_B);
}