[ nessoken @ 09.11.2006. 23:13 ] @
pozdrav!! trebam pomoc oko zadatka koji glasi ovako: Jednostavna datoteka s podacima o studentima (s fiksnom veličinom zapisa; zapis sadrži matični broj, prezime i ime studenta i broj položenih ispita). Ponuditi korisniku izbornik s osnovnim operacijama (kreiranje datoteke, unos podataka, ispis podataka, pretraživanje zapisa, ispis vremena pretraživanja). Kod pretraživanja izmjeriti vrijeme pronalaženja podatka u datoteci i smjestiti podatak o tome u odgovarajuće polje (svaki element polja odnosi se na odgovarajući zapis u datoteci; prije ulaska u glavni izbornik svi elementi polja trebaju se inicijalizirati nulama). Kod ispisa vremena pretraživanja uz svako izmjereno vrijeme ispisati odgovarajući zapis u datoteci (ispisuju se samo izmjerena vremena; ne početne nule). Koristiti biblioteku za mjerenje vremena proširenu funkcijom za unos znakovnih nizova. napravio sam nest, sluzeci se primjerima s predavanja, iako mi neki postupci nisu jasni. treba mi preinaka programa, koja ce nakon kreiranja datoteke koristiti istu tu datoteku za citanje/upis podataka. isto tako treba mi i petlja koja provjerava da li je datoteka kreirana, a ako nije, ne izbacuje error, vec daje obavijest da datoteka nije kreirana... Code: #include <iostream> #include <fstream> #include "vrijeme.cpp" using namespace std; struct tstudent{ int mat_br; char prez_ime[35]; int g_stu; int brispita; }; tstudent student; fstream dat; char naziv_datoteke[40]; void kreiranje_datoteke(){ cout << "Unesite naziv datoteke u koju cete spremati podatke:"; cin >> naziv_datoteke; dat.open(naziv_datoteke,ios::in | ios::binary); if (!dat){ dat.open(naziv_datoteke,ios::out | ios::binary); dat.close(); } else { cout << "Datoteka " << naziv_datoteke << " vec postoji na disku."<<endl; dat.close(); } dat.clear(); }; void unos_podataka(){ char dalje; dat.open(naziv_datoteke, ios::out | ios::app | ios::binary); do{ dat.seekg(0,ios::end); cout << "Maticni broj:"; cin >> student.mat_br; cout << "Prezime i ime:"; unos (student.prez_ime); cout << "Godina studija:"; cin >> student.g_stu; cout << "Broj polozenih ispita:"; cin >> student.brispita; dat.write((char *) &student,sizeof(student)); cout << "Dalje? (d/n)"; cin >> dalje; } while (dalje=='d'); dat.close(); dat.clear(); }; void ispis_podataka(){ dat.open(naziv_datoteke,ios::in | ios::binary); while (1){ dat.read((char *) &student,sizeof(student)); if (dat.eof()) break; cout << "Maticni broj: " << student.mat_br << endl; cout << "Prezime i ime: " << student.prez_ime << endl; cout << "Godina studija: " << student.g_stu << endl; cout << "Broj polozenih ispita: " << student.brispita << endl; } dat.close(); dat.clear(); }; void trazi(double *polje){ int mb=0; int brojac=0; cout <<"Maticni broj studenta: "; cin >> mb; vrijeme_pocetak(); dat.open(naziv_datoteke, ios::in | ios::binary); while (1){ dat.read((char *) &student,sizeof(student)); if (dat.eof()) break; if (student.mat_br==mb){ cout << "Maticni broj: " << student.mat_br << endl; cout << "Prezime i ime: " << student.prez_ime << endl; cout << "Godina studija: " << student.g_stu << endl; cout << "Broj polozenih ispita: " << student.brispita << endl; vrijeme_kraj(); polje[brojac]= vrijeme_proteklo(); } brojac++; } if (brojac==0) cout << "Student s maticnim brojem " << mb << " nije nadjen u datoteci."<<endl; dat.close(); dat.clear(); }; void ispis_vremena(double *polje){ int brojac=0; dat.open(naziv_datoteke,ios::in | ios::binary); while (1){ dat.read((char *) &student,sizeof(student)); if (dat.eof()) break; if (polje[brojac] != -1) { cout << "Maticni broj: " << student.mat_br << endl; cout << "Prezime i ime: " << student.prez_ime << endl; cout << "Godina studija: " << student.g_stu << endl; cout << "Broj polozenih ispita: " << student.brispita << endl; cout << "Vremena proslo: " << polje[brojac] << endl; } brojac++; } dat.close(); dat.clear(); }; int main(){ int izbor; int n = 9999; double *polje = new double[n]; for (int i=0; i<=n; i++) polje[i] = -1; do{ cout <<"Izaberite :" <<endl<<endl; cout <<"1. Kreiranje datoteke"<<endl; cout <<"2. Unos podataka u datoteku"<<endl; cout <<"3. Ispis svih zapisa iz datoteke"<<endl; cout <<"4. Ispis podataka o zadanom studentu"<<endl; cout <<"5. Ispis o vremenu"<<endl; cout <<"9. Izlaz iz programa"<<endl; cin >> izbor; switch (izbor){ case 1:kreiranje_datoteke();break; case 2:unos_podataka();break; case 3:ispis_podataka();break; case 4:trazi(polje); break; case 5:ispis_vremena(polje);break; } } while (izbor != 9); return 1; } hvala unaprijed na pomoci |