
Шустрый

Профиль
Группа: Участник
Сообщений: 106
Регистрация: 31.1.2006
Репутация: нет Всего: нет
|
привет) у меня при выполнении появляется ошибка при загрузке файла в функции void AUTO::LoadDB() помогите срочно надо решить... Код | #include <fstream.h> #include <iostream.h> #include <conio.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <iomanip.h> #include <cstdlib> int clrscr()//ochistka ekrana { system("cls"); } const int L=21; // max dlina strok v pol9h struct fio //stryktyra FIO { char name[L],fam[L],ot[L]; }; struct mashina//stryktyra mashina { fio f; char marka[L]; int god; char strana[L]; }; struct max_avto//stryktyra max avto { fio f; int ma; };
class AUTO { private: mashina * mash; // peremena9 na stryktyry mashina max_avto * ma; // peremena9 na styryktyry max_avto int n; // kol zapisey v BD int k; // schetchik kol vladelcev s max avto public: void LoadDB(); void ViewDB(); void AddRecord(); void RemoveRecord(); void SaveDB(int); void alf_sort(); void god_sort(); void strana_sort(); void marka_sort(); void vlad_s_m_a(); AUTO(){ n=k=0; // îáíóëåíèå çíà÷åíèåé ñ÷åò÷èêîâ çàïèñåé â ÁÄ è ïåðå÷íÿ îò÷åñòâ mash = NULL; ma = NULL; }; ~AUTO(){ if (n>0) delete [] mash; // åñëè åñòü çàïèñè â ÁÄ, òî óäàëèòü ìàññèâ èç ïàìÿòü if (k>0) delete [] ma; // åñëè åñòü çàïèñè â ïåðå÷íå îò÷åñòâ, òî óäàëèòü èç ïàìÿòè ìàññèâ n=k=0; // îáíóëåíèå çíà÷åíèé ñ÷åò÷èêîâ çàïèñåé â ÁÄ è ïåðå÷íÿ îò÷åñòâ mash = NULL; ma = NULL; }; };
void AUTO::LoadDB() { int i; char temp[L]; mashina tma; /*ifstream f1;//peremena9 for file f1.open("f1.txt");//open file if (!f1.good()) { cout<<"fail ne nayden"; getch(); exit(1); } /* n=0; do{ f1>>tma[n].f.fam>>tma[n].f.name>>tma[n].f.ot>>tma[n].marka>>tma[n].god>>tma[n].strana; n++; }while(in.good()); n--; f1.close(); mash = new mashina[n]; f1.open("f1.txt"); */ FILE * fin = fopen("f1.txt","r"); for(n=0;!feof(fin);n++) { fscanf(fin,"%s ",tma.f.fam); fscanf(fin,"%s ",tma.f.name); fscanf(fin,"%s ",tma.f.ot); fscanf(fin,"%s ",tma.marka); fscanf(fin,"%s ",tma.god); fscanf(fin,"%s ",tma.strana);
} fclose(fin); mash = new mashina[n]; fin = fopen("f1.txt","r"); //f1.open("f1.txt"); for(i=0;!feof(fin);i++) { fscanf(fin,"%s ",tma.f.fam); fscanf(fin,"%s ",tma.f.name); fscanf(fin,"%s ",tma.f.ot); fscanf(fin,"%s ",tma.marka); fscanf(fin,"%s ",tma.god); fscanf(fin,"%s ",tma.strana); } fclose(fin); ViewDB(); } void AUTO::ViewDB() // ìåòîä êëàññà database âûâîäà íà ýêðàí ñîäåðæèìîãî ÁÄ { int i; //ïåðåìåííàÿ-ñ÷åò÷èê clrscr(); // î÷èñòêà ýêðàíà cout<<setw(20)<<"Famili9"<<"|"<<setw(20)<<"Im9"<<"|"<<setw(20)<<"otchestvo"<<"|"<<setw(8)<<"marka"<<"|"<<setw(5)<<"god"<<"|"<<setw(10)<<"strana\n"; cout<<"======================================================================\n"; for(i=0;i<n;i++) //öèêë, âûâîäÿùèé äàííûå ÁÄ íà ýêðàí cout<<setw(20)<<mash[i].f.fam<<"|"<<setw(20)<<mash[i].f.name<<"|"<<setw(20)<<mash[i].f.ot<<"|"<<setw(8)<<mash[i].marka<<"|"<<setw(5)<<mash[i].god<<"|"<<setw(10)<<mash[i].strana; } void AUTO::AddRecord() // ìåòîä êëàññà database, äëÿ äîáàâëåíèå íîâîé çàïèñè { int i; //ñ÷åò÷èê char ch; // ïåðåìåííàÿ, îïðåäåëÿþùàÿ íåîáõîäèìîñòü ââîäà íîâûõ äàííûõ mashina * temp; // óêàçàòåëü íà âðåìåííûé ìàññèâ õðàíåíèÿ äàííûõ ÁÄ do { ViewDB(); // âûâîä ñîäåðæèìîãî ÁÄ íà ýêðàí temp = new mashina[n+1]; // âûäåëåíèå ïàìÿòè ïîä ìàññèâ ðàçìåðîì n+1 for(i=0;i<n;i++) temp[i] = mash[i]; // êîïèðîâàíèå äàííûõ èç ñòðóêòóðû student â temp cout<<"\nVvedite familiyu->"; cin>>temp[n].f.fam; cout<<"\nVvedite imya->"; cin>>temp[n].f.name; cout<<"\nVvedite otchestvo->"; cin>>temp[n].f.ot; cout<<"\nVvedite marky mashiny->"; cin>>temp[n].marka; cout<<"\nVvedite god->"; cin>>temp[n].god; cout<<"\nVvedite strany proizvoditel->"; cin>>temp[n].strana; delete [] mash; // óäàëåíèå ñòàðîãî ìàññèâà student n++; // óâåëè÷åíèå ñ÷åò÷èêà çíà÷åíèå çàïèñåé â ÁÄ mash = new mashina [n]; // âûäåëåíèå ïàìÿòè ïîä íîâûé ìàññèâ ðàçìåðîì n for(i=0;i<n;i++) mash[i] = temp[i]; // êîïèðîâàíèå äàííûõ èç âðåìåííîãî ìàññèâà delete [] temp; // óäàëåíèå âðåìåííîãî ìàññèâà ViewDB(); // âûâîä ñîäåðæèìîãî ÁÄ íà ýêðàí cout<<"\nHotite dobavit'?\n(Y)"; cin>>ch; // ðåøåíèå î äîáàâëåíèå íîâîé çàïèñè }while(ch =='y') ; //åñëè íàæàòà êëàâèøà 'y' } void AUTO::RemoveRecord() // ìåòîä êëàññà database óäàëÿþùèé çàïèñü èç ÁÄ { int i; //ñ÷åò÷èê int m=0; // ïåðåìåííàÿ, õðàíÿùàÿ èíäåêñ óäàëÿåìîé çàïèñè char ch; // ïåðåìåííàÿ âûáîðà ðåøåíèÿ îá óäàëåíèè ñëåäóþùåé çàïèñè fio fio; // ñòðóêòðóðà äëÿ íàõîæäåíèå èñêîìîé çàïèñè mashina * temp; do { ViewDB(); // ïðîñìîòð ñîäåðæèìîãî ÁÄ cout<<"\nVvedite familiyu"; cin>>fio.fam; cout<<"\nVvedite imya"; cin>>fio.name; cout<<"\nVvedite otchestvo"; cin>>fio.ot; for(i=0;i<n;i++) //öèêë, ïðîâåðÿþùèé ñî ñóùåñòâîâàíèå ââåäåííîé çàïèñè if(!strcmp(fio.fam,mash[i].f.fam)&& !strcmp(fio.name,mash[i].f.name)&& !strcmp(fio.ot,mash[i].f.ot)) // åñëè íàéäåíî { temp = new mashina [n-1]; // âûäåëåíèå ïàìÿòè ïîä ìàññèâ ðàçìåðîì n-1 m=i; //ñîõðàíåíèå èíäåêñà íàéäåííîé çàïèñè break; //âûõîä èç öèêëà } if (i==n) cout<<"\nnet takoy zapisi!\n"; else { for(i=0;i<n-1;i++) //êîïèðîâàíèå âî âðåìåííûé ìàññèâ çàïèñåé èç ìàññèâà student if (i>=m) temp[i] = mash[i+1]; else temp [i] = mash[i]; delete [] mash; // óäàëåíèå ìàññèâà student n--; // óìåíüøåíèå ñ÷åò÷èêà çàïèñåé â ÁÄ mash= new mashina [n]; // âûäåëåíèå ïàìÿòè ïîä ìàññèâ ðàçìåðîì n äëÿ õðàíåíèÿ ÁÄ for(i=0;i<n;i++) mash[i] = temp [i]; //êîïèðîâàíèå äàííûõ èç âðåìåííîé ïåðåìåííîé â student delete [] temp; // óäàëåíèå âðåìåííîãî ìàññèâà ViewDB(); // ïðîñìîòð ñîäåðæèìîãî ÁÄ } cout<<"Hotite ydalit' eshe? (Y)";cin>>ch; }while (ch == 'y'); // åñëè íàæàòà êëàâèøà "y" } void AUTO::SaveDB(int filetype=0) // ìåòîä êëàññà database, ñîõðàíÿþùèé ÁÄ â ôàéë { int i; // ñ÷åò÷èê ofstream fout;//ïîòîêîâàÿ ôàéëîâàÿ ïåðåìåííàÿ switch (filetype) //âûáîð ñîõðàíÿåìîãî ôàéëà { case 0: fout.open("input.txt");cout<<"\nInput_file saved\n";break; case 1: fout.open("alfsort.txt");break; case 2: fout.open("godsort.txt");break; case 3: fout.open("strana_sort.txt");break; case 4: fout.open("marka_sort.txt");break; } for(i=0;i<n;i++) //öèêë âûâîäà çàïèñåé â ôàéë fout<<setw(20)<<mash[i].f.fam<<setw(20)<<mash[i].f.name<<setw(20)<<mash[i].f.ot<<setw(20)<<mash[i].marka<<setw(5)<<mash[i].god<<setw(20)<<mash[i].strana<<endl; fout.close(); // çàêðûòèå ôàéëà } void AUTO::alf_sort()//sortirovka po alfavity { int fl,l,i; l=n-1; mashina t; do{ fl=0; for( i=0;i<l;i++) {if(strcmp(mash[i].f.fam,mash[i+1].f.fam)>0){t=mash[i];mash[i]=mash[i+1];mash[i+1]=t;fl=1;} if(strcmp(mash[i].f.fam,mash[i+1].f.fam)==0&&strcmp(mash[i].f.name,mash[i+1].f.name)>0) {t=mash[i];mash[i]=mash[i+1];mash[i+1]=t;fl=1;} if(strcmp(mash[i].f.fam,mash[i+1].f.fam)==0&&strcmp(mash[i].f.name,mash[i+1].f.name)==0&&strcmp(mash[i].f.ot,mash[i+1].f.ot)>0) {t=mash[i];mash[i]=mash[i+1];mash[i+1]=t;fl=1;}} l--; }while(fl==1); ViewDB(); SaveDB(1); } void AUTO::god_sort() { int fl,l; l=n-1; mashina t; do{ fl=0; for(int i=0;i<l;i++) if(mash[i].god>mash[i+1].god) { t=mash[i]; mash[i]=mash[i+1]; mash[i+1]=t; fl=1; } l--; }while(fl==1); ViewDB(); SaveDB(2); } void AUTO::strana_sort() { mashina t; int fl,l,i; l=n-1; do{ fl=0; for(i=0;i<l;i++) if (strcmp(mash[i].strana,mash[i+1].strana)>0) { t=mash[i]; mash[i]=mash[i+1]; mash[i+1]=t; fl=1; } l--; }while(fl==1); ViewDB(); SaveDB(3); } void AUTO::marka_sort() { mashina t; int fl,l,i; l=n-1; do{ fl=0; for(i=0;i<l;i++) if (strcmp(mash[i].marka,mash[i+1].marka)>0) { t=mash[i]; mash[i]=mash[i+1]; mash[i+1]=t; fl=1; } l--; }while(fl==1); ViewDB(); SaveDB(4); } void AUTO::vlad_s_m_a()//poisk vladelca s max kolichestvom avtomobiley { int k=0,y=0,fl=0,p,l; for(int j=0;j<n;j++) ma[j].ma=0; p=0; int max=ma[0].ma; for(int i=0;i<n;i++) { for(int j=1;j<=n;j++) if(((strcmp(mash[i].f.name,mash[j-1].f.name)==0)&& strcmp(mash[i].f.fam,mash[j-1].f.fam)==0)&& strcmp(mash[i].f.ot,mash[j-1].f.ot)==0) { strcpy(ma[j-1].f.name,ma[i].f.name); strcpy(ma[j-1].f.fam,ma[i].f.fam); strcpy(ma[j-1].f.ot,ma[i].f.ot); ma[j-1].ma++; if (max<ma[i].ma) p=ma[i].ma; } k++;} cout<<"vladelca i kol avto"<<endl; for(int h=0;h<k;h++) {if (max<ma[h].ma) max=p=ma[h].ma; cout<<h+1<<ma[h].f.fam<<" | "<<ma[h].f.name<<" | "<<ma[h].f.ot<<" | "<<ma[h].ma<<endl;} cout<<"vladelec s max avto"<<endl; for(int i=0;i<n;i++) if(p==ma[i].ma) cout<<ma[i].f.fam<<" | "<<ma[i].f.name<<" | "<<ma[i].f.ot<<" | "<<ma[i].ma<<endl; ofstream f1;//peremena9 for file f1.open("maxs.txt"); for(int i=0;i<n;i++) f1<<ma[i].f.fam<<" | "<<ma[i].f.name<<" | "<<ma[i].f.ot<<" | "<<ma[i].ma<<endl; f1.close(); } void menu() { clrscr(); cout<<"1.Zagruzka\n"; cout<<"2.Prosmotr\n"; cout<<"3.Dobavlenie\n"; cout<<"4.Udalenie\n"; cout<<"5.Save to file\n"; cout<<"6.Sortirovka po FIO\n"; cout<<"7.Sortirovka po gody\n"; cout<<"8.Sortirovka po stane\n"; cout<<"9.Sortirovka po marke\n"; cout<<"10.Vladelec s maksimalnym kolichestvom avtomobiley\n"; cout<<"11.VIhod\n\n"; cout<<"Vash Vibor: "; } int main() { clrscr(); AUTO a; while(1) { int p; menu(); cin>>p; switch (p) { case 1 : a.LoadDB();break; case 2 : a.ViewDB();break; case 3 : a.AddRecord();break; case 4 : a.RemoveRecord();break; case 5 : a.SaveDB();break; case 6 : a.alf_sort();break; case 7 : a.god_sort();break; case 8 : a.strana_sort();break; // ñîðòèðîâêà ïåðå÷íÿ ôàìèëèé ïî êîëè÷åñòâó case 9 : a.marka_sort();break; case 10 : a.vlad_s_m_a();break; case 11 : return 0; // âûõîä èç ïðîãðàììû } getch(); } }
|
|