Код:
#include<iostream>
#include<string.h>
#include<fstream>
#include<stdlib.h>
using namespace std;
ofstream out;
ifstream in;
struct sp
{
char fio[15];
int kz;
double rez[10];
double srz;
}a[20],*p,d;
char filename[10],imyafile[10];
int n;
void input(sp &d);
void zfile();
void readf(int &n, sp *p);
void prosm();
void dob();
void kor();
void ud();
void obr();
int main()
{
p=a;
setlocale(LC_ALL, "Russian");
int pm;
cout<<"Имя файла."<<endl;
cin>>filename;
do
{
cout<<"1. Запись в файл."<<endl;
cout<<"2. Просмотр."<<endl;
cout<<"3. Добавление."<<endl;
cout<<"4. Корректировка."<<endl;
cout<<"5. Удаление."<<endl;
cout<<"6. Оброботка."<<endl;
cout<<"7. Выход."<<endl;
cout<<"Введите пункт меню."<<endl;
cin>>pm;
switch(pm)
{
case 1:zfile();break;
case 2:prosm();break;
case 3:dob();break;
case 4:kor();break;
case 5:ud();break;
case 6:obr();break;
}
}
while(pm<7);
return 0;
}
void input(sp &d)
{
double s=0.0;
int i;
cout<<"Фамилия. Количество результатов."<<endl;
cin>>d.fio;
d.kz=rand()%5+2;
for(i=0; i<d.kz;i++)
{
d.rez[i]=rand()%10-2.45;
s+=d.rez[i];
}
d.srz=s/d.kz;
}
void zfile()
{
char ch;
int j;
out.open(filename);
do
{
input(d);
out<<d.fio<<endl<<d.kz<<endl;
for(j=0; j<d.kz;j++)
out<<d.rez[j]<<endl;
out<<d.srz<<endl;
cout<<"Будете еще вводить. "<<endl;
cin>>ch;
}
while(toupper(ch)=='Y');
out.close();
}
void readf(int &n, sp *p)
{
int i,j;
i=0;
in.open(filename);
while(!in.eof())
{
in>>p[i].fio>>p[i].kz;
for(j=0;j<p[i].kz;j++)
in>>p[i].rez[j];
in>>p[i].srz;
i++;
}
in.close();
n=i-1;
}
void prosm()
{
int i,j;
readf(n,p);
cout<<"Фамилия. Количесвто результатов. Результаты."<<endl;
for(i=0;i<n;i++)
{
cout<<"Фамилия: "<<p[i].fio<<endl;
cout<<"Количество результатов: "<<p[i].kz<<endl;
for(j=0;j<p[i].kz;j++)
cout<<p[i].rez[j]<<" ";
cout<<"Средний результат: "<<p[i].srz<<endl;
}
}
void dob()
{
char ch;
int j;
out.open(filename, ios::app);
do
{
input(d);
out<<d.fio<<endl<<d.kz<<endl;
for(j=0; j<d.kz;j++)
out<<d.rez[j]<<endl;
out<<d.srz<<endl;
cout<<"Еще? "<<endl;
cin>>ch;
}
while(toupper(ch)=='Y');
out.close();
}
void kor()
{
char ch;
int j,i, nkz;
prosm();
do
{
cout<<"Введите номер корректируемой записи."<<endl;
cin>>nkz;
input(d);
strcpy(p[nkz-1].fio, d.fio);
p[nkz-1].kz=d.kz;
for(j=0;j<d.kz;j++)
p[nkz-1].rez[j]=d.rez[j];
p[nkz-1].srz=d.srz;
cout<<"Еще? "<<endl;
cin>>ch;
}
while(toupper(ch)=='Y');
out.open(filename);
for(i=0;i<n;i++)
{
cout<<"Sourname : "<<p[i].fio<<endl;
out<<p[i].fio<<endl<<p[i].kz<<endl;
for(j=0;j<p[i].kz;j++)
out<<p[i].rez[j]<<endl;
}
out.close();
}
void ud()
{
char ch;
int i,j,nuz;
prosm();
do
{
cout<<"Номер удаляемой записи."<<endl;
cin>>nuz;
strcpy(p[nuz].fio, "***");
cout<<"Еще?"<<endl;
cin>>ch;
}
while(toupper(ch)=='Y');
out.open(filename, ios::trunc);
for(i=0;i<n;i++)
if(strcmp(p[i].fio,"***"))
{
out<<p[i].fio<<endl<<p[i].kz<<endl;
for(j=0;j<p[i].kz;j++)
out<<p[i].rez[j]<<endl;
out<<p[i].srz<<endl;
}
out.close();
}
void obr()
{
int i,l;
readf(n,p);
cout<<"Введите имя файла."<<endl;
cin>>imyafile;
out.open(imyafile);
for(l=0;l<n-1;l++)
for(i=0;i<n-1;i++)
if(p[i].srz<p[i+1].srz)
{
d=p[i];
p[i]=p[i+1];
p[i+1]=d;
}
for(i=0;i<n;i++)
{
cout<<p[i].fio<<" "<<p[i].srz<<endl;
out<<p[i].fio<<endl<<p[i].srz<<endl;
}
out.close();
}
При нажатии 2 - Просмотр, ничего не происходит. Помогите, пожалуйста.
Все остальное работает, вот только корректировка "выёживается".