Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Сохранение и загрузка


Автор: Feanor 6.6.2005, 11:10
Ещё раз здравствуйте! У меня есть программа, но её нужно доработать, а конкретнее сделать так, чтобы таблица сохранялось и загружалось, там есть алгоритм ввода и вывода, но чего то не пашет, добавьте пожалуйста то, чего не хватает smile
Огромная просьба: сделать нужно как можно быстрее, тем более, что это пустячок, а иначе скоро будет ещё одна жертва науки smile smile smile

Вот:



Код

#include<conio.h>
#include<iostream.h>
#include<stdlib.h>
#include<iomanip.h>
#include<fstream.h>
struct stud
{
char Name[20],Tel[10];
int Age;
int Sex;
};

char*fname() {char*s=new char[40];
cout<<"Enter FileName:"; cin>>s;return s;}

void save (fstream&x, stud y) { x<<y.Age<<' '<<y.Sex<<' ';}
void save (char fn[], stud x[], int n)
{int i; fstream f;
f.open (fn, ios::out);
f<<n<<' ';
for (i=0;i<n;i++)
save (f, x[i]);f.close();}

void load (fstream&x, stud&y){x>>y.Age>>y.Sex>>y.Tel;}

void load (char fn[], stud x[], int&n)
{int i;fstream f;
f.open (fn, ios::in);
f>>n;
for (i=0; i<n;i++)
load(f,x[i]);
f.close();}

void input (stud&record)
{
cout<<"input Name:";cin>>record.Name;
cout<<"input Age:";cin>>record.Age;
cout<<"input Sex:";
cin>>record.Sex;

//record.Sex=(sex=='m'||sex=='M')?1:0;// это преподу не понравилось и он убрал
cout<<"input Tel:";cin>>record.Tel;
}

void output(stud& record)
{
cout<<record.Name<<'\t';
cout<<record.Age<<'\t';
cout<<record.Sex<<'\t';
cout<<record.Tel<<endl;
}

void output_all(stud records[], int cout)
{
for (int i=0;i<cout;i++)
output(records[i]);
}

void the_tel(stud records[], int count)
{
char new_tel[3];
cout<<"new_tel=";
cin>>new_tel;
int flag=0;
for (int i=0;i<count;i++)
{
flag=1;
for (int j=0;j<3;j++)
if (new_tel[j]!=records[i].Tel[j])
{
flag=0;
break;
}
if(flag)
 output(records[i]);
 }
}

void the_name(stud records[], int count)
{
 char new_bukva;
 cout<<"new_bukva=";
 cin>>new_bukva;

 for(int i=0;i<count; i++)
 {
if(new_bukva==records[i].Name[1])
output(records[i]);
}
}

char menu()
{
char b;
cout<<"1-new record"<<endl;
cout<<"2-show all record"<<endl;
cout<<"3-the_telefon"<<endl;
cout<<"4-the_name"<<endl;
cout<<"5-Exit"<<endl;
cout<<"6-Save"<<endl;
cout<<"7-Load"<<endl;

cout<<"input:";
cin>>b;
return b;
}

int main()
{
stud table[20];
int cur=0;
char key=0;
clrscr();
for(;;)
{
key=menu();
clrscr();
switch (key)
{
case'1':
if (cur<20)
{
input(table[cur]);
cur++;
}
else
cout<<"error:input max record"<<endl;
break;
case'2':
output_all(table, cur);
break;
case'3':
the_tel(table, cur);
break;
case'4':
the_name(table, cur);
break;
case'5':
return 0;
  }
 }
}

Автор: Feanor 6.6.2005, 21:00
Ну же товарищи, помогите пожалуйста, горит, аж жжот smile smile smile
З.Ы. прога выполнена в C++

Автор: Feanor 8.6.2005, 20:33
Ну же товарищи, помогите пожалуйста smile smile smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)