Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //AUTOK_feladat.CPP
- // 8/3. feladat
- #include <iostream> // szabványos input, output C++-ban (cin>>, cout<<, cerr<<, stb.)
- #include <fstream> // szabványos fájlkezelés C++-ban
- #include <iomanip> // manipulátorok (setw(), setprecision(), stb.)
- using namespace std;
- struct autost{
- char rendszam[8];
- char tipus[20];
- double ar;
- unsigned int ev;
- };
- int Megjelenit(char []);
- int Bovit(char []);// Szabványos bemenetről bővít,
- // visszaadja a hozzáfűzött struktúrák darabszámát
- bool KeresR(char [], char []); // Keresés rendszám szerint
- int Modosit(char [], char []); // Módosítás: rendszám szerint azonosított
- //autó árának 10%-kal való csökkentése
- double Legolcsobb(char []);
- autost Legdragabb(char []);
- int main()
- {
- setlocale(LC_ALL, "Hun");
- char nev[]="autok.dat";
- cout<<"Az autók száma: "<<Megjelenit(nev)<<endl;
- cout <<"Bővítés szabványos bemenetről\n\n";
- cout << Bovit(nev) << " darab autóval bővítettük az állományt.\n\n";
- cout<<"Az autók száma: "<<Megjelenit(nev)<<endl;
- Legolcsobb(nev);
- autost legdragabb=Legdragabb(nev);
- cout << nev << " állományban lévő legdrágább autó adatai:\n"
- << setw(8) << legdragabb.rendszam << setw(20) << legdragabb.tipus
- << setw(20) << setprecision(0) << legdragabb.ar
- << setw(8) << legdragabb.ev << endl;
- char rsz[8];
- cout << "\nA keresendő autó rendszáma: ";
- cin.clear();
- cin >> rsz;
- strupr(rsz); // a rendszám nagybetűssé alakítása
- if (KeresR(nev,rsz))
- cout <<"Megtaláltam!\n\n";
- else
- cout << "\nNincs ilyen autó!\n\n";
- cout << endl;
- system("pause");
- return 0;
- }
- int Megjelenit(char fnev[])
- {
- // állomány megnyitása bináris olvasásra
- ifstream be(fnev, ios::binary);
- if (be) //Ha az előző file-művelet sikeres volt, akkor megy tovább
- {
- autost a;
- cout << "Rendszám Típus Ár Év\n\n";
- cout.setf(ios::fixed | ios::left); // fixpontos megjelenítés, balra igazítás
- int db=0;
- while (be.read((char *)&a,sizeof(autost)))
- {
- cout << setw(8) << a.rendszam << setw(20) << a.tipus
- << setw(20) << setprecision(0) << a.ar
- << setw(8) << a.ev << endl;
- db++;
- }
- be.close(); // állomány bezárása
- cout << endl;
- return db;
- }
- else
- {
- cerr << "\nA(z) "<< fnev << " allomany nem letezik!\a\n\n";
- system("pause");
- return 0;
- }
- }
- int Bovit(char fnev[])
- { // Szabványos bemenetről bővít,
- // visszaadja a hozzáfűzött elemek darabszámát
- // állomány megnyitása bináris hozzáfűzésre
- ofstream ki(fnev, ios::binary | ios::app);
- autost adat;
- int db=0;
- char c;
- do{
- cout << "\nRendszám (ABC-123): ";
- cin >> adat.rendszam;
- strupr(adat.rendszam);
- cout << "Típus: ";
- cin.get();
- cin.getline(adat.tipus, 20);
- strupr(adat.tipus);
- cout << "Ár: ";
- cin >> adat.ar;
- cout << "Év: ";
- cin >> adat.ev;
- ki.write((char *) &adat, sizeof(autost));// a file-ba hátra hozzáfűz
- ++db;
- cout << "\nSzeretne új adatot felvenni (I/N)? ";
- cin.clear();
- cin >> c;
- }while(toupper(c)=='I');
- ki.close();
- cout << endl;
- return db;
- }
- autost Legdragabb(char fnev[])
- {
- ifstream be(fnev, ios::binary);
- if (be)
- {
- autost a;
- autost ld={0,"","",0};
- //-----------------Legdrágább kiválasztása--------------
- while (be.read((char *)&a,sizeof(autost))) // amíg van beolvasott adat
- {
- if (a.ar>ld.ar)
- {
- ld=a;
- }
- }
- be.close();
- return ld;
- }
- else
- {
- cerr << "\nA(z) "<< fnev << " allomany nem letezik!\a\n\n";
- system("pause");
- exit(1);
- }
- }
- double Legolcsobb(char fnev[])
- {
- ifstream be(fnev, ios::binary);
- if (be)
- {
- autost a;
- cout << "\nA legolcsóbb(ak):\n";
- //cout << "Rendszám Típus Ár Év\n\n";
- cout.setf(ios::fixed | ios::left); // fixpontos megjelenítés, balra igazítás
- double min=2000000000.0;
- //-----------------Legolcsóbb(ak) kiválasztása--------------
- while (be.read((char *)&a,sizeof(autost))) // amíg van beolvasott adat
- {
- if (a.ar<min)
- {
- min=a.ar;
- }
- }
- be.clear();
- be.seekg(0); //be.seekg(0,ios::beg);
- //----------------Legolcsóbb(ak) kiíratása---------------
- while (be.read((char *)&a,sizeof(autost)))
- {
- if(a.ar==min)
- {
- cout << setw(8) << a.rendszam << setw(20) << a.tipus
- << setw(20) << setprecision(0) << a.ar
- << setw(8) << a.ev << endl;
- }
- }
- be.close();
- return min;
- }
- else
- {
- cerr << "\nA(z) " << fnev << " allomany nem letezik!\a\n\n";
- system("pause");
- exit(1);
- }
- }
- bool KeresR(char fnev[], char rsz[]) // Keresés rendszám szerint
- {
- ifstream be(fnev, ios::binary);
- if (be)
- {
- autost a;
- while (be.read((char *)&a,sizeof(autost)))
- {
- if(strcmp(a.rendszam,rsz)==0)
- {
- be.close();
- cout << setw(8) << a.rendszam << setw(20) << a.tipus
- << setw(20) << setprecision(0) << a.ar
- << setw(8) << a.ev << endl;
- return true;
- }
- }
- be.close();
- return false;
- }
- else
- {
- cerr << "\nA(z) " << fnev << " allomany nem letezik!\a\n\n";
- system("pause");
- exit(1);
- }
- }
Add Comment
Please, Sign In to add comment