Guest User

Untitled

a guest
Jul 16th, 2018
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.24 KB | None | 0 0
  1. //AUTOK_feladat.CPP
  2. // 8/3. feladat
  3.  
  4. #include <iostream> // szabványos input, output C++-ban (cin>>, cout<<, cerr<<, stb.)
  5. #include <fstream> // szabványos fájlkezelés C++-ban
  6. #include <iomanip> // manipulátorok (setw(), setprecision(), stb.)
  7.  
  8. using namespace std;
  9.  
  10. struct autost{
  11. char rendszam[8];
  12. char tipus[20];
  13. double ar;
  14. unsigned int ev;
  15. };
  16.  
  17. int Megjelenit(char []);
  18. int Bovit(char []);// Szabványos bemenetről bővít,
  19. // visszaadja a hozzáfűzött struktúrák darabszámát
  20. bool KeresR(char [], char []); // Keresés rendszám szerint
  21. int Modosit(char [], char []); // Módosítás: rendszám szerint azonosított
  22. //autó árának 10%-kal való csökkentése
  23. double Legolcsobb(char []);
  24. autost Legdragabb(char []);
  25.  
  26. int main()
  27. {
  28. setlocale(LC_ALL, "Hun");
  29. char nev[]="autok.dat";
  30.  
  31. cout<<"Az autók száma: "<<Megjelenit(nev)<<endl;
  32.  
  33. cout <<"Bővítés szabványos bemenetről\n\n";
  34. cout << Bovit(nev) << " darab autóval bővítettük az állományt.\n\n";
  35. cout<<"Az autók száma: "<<Megjelenit(nev)<<endl;
  36.  
  37. Legolcsobb(nev);
  38.  
  39. autost legdragabb=Legdragabb(nev);
  40.  
  41. cout << nev << " állományban lévő legdrágább autó adatai:\n"
  42. << setw(8) << legdragabb.rendszam << setw(20) << legdragabb.tipus
  43. << setw(20) << setprecision(0) << legdragabb.ar
  44. << setw(8) << legdragabb.ev << endl;
  45.  
  46.  
  47. char rsz[8];
  48. cout << "\nA keresendő autó rendszáma: ";
  49. cin.clear();
  50. cin >> rsz;
  51. strupr(rsz); // a rendszám nagybetűssé alakítása
  52.  
  53. if (KeresR(nev,rsz))
  54. cout <<"Megtaláltam!\n\n";
  55. else
  56. cout << "\nNincs ilyen autó!\n\n";
  57.  
  58. cout << endl;
  59. system("pause");
  60. return 0;
  61. }
  62.  
  63. int Megjelenit(char fnev[])
  64. {
  65. // állomány megnyitása bináris olvasásra
  66.  
  67. ifstream be(fnev, ios::binary);
  68.  
  69. if (be) //Ha az előző file-művelet sikeres volt, akkor megy tovább
  70. {
  71. autost a;
  72.  
  73. cout << "Rendszám Típus Ár Év\n\n";
  74.  
  75. cout.setf(ios::fixed | ios::left); // fixpontos megjelenítés, balra igazítás
  76.  
  77. int db=0;
  78.  
  79. while (be.read((char *)&a,sizeof(autost)))
  80. {
  81. cout << setw(8) << a.rendszam << setw(20) << a.tipus
  82. << setw(20) << setprecision(0) << a.ar
  83. << setw(8) << a.ev << endl;
  84.  
  85. db++;
  86. }
  87.  
  88. be.close(); // állomány bezárása
  89.  
  90. cout << endl;
  91.  
  92. return db;
  93. }
  94. else
  95. {
  96. cerr << "\nA(z) "<< fnev << " allomany nem letezik!\a\n\n";
  97. system("pause");
  98. return 0;
  99. }
  100.  
  101.  
  102. }
  103. int Bovit(char fnev[])
  104. { // Szabványos bemenetről bővít,
  105. // visszaadja a hozzáfűzött elemek darabszámát
  106.  
  107. // állomány megnyitása bináris hozzáfűzésre
  108.  
  109. ofstream ki(fnev, ios::binary | ios::app);
  110.  
  111. autost adat;
  112. int db=0;
  113. char c;
  114.  
  115. do{
  116. cout << "\nRendszám (ABC-123): ";
  117. cin >> adat.rendszam;
  118. strupr(adat.rendszam);
  119. cout << "Típus: ";
  120. cin.get();
  121. cin.getline(adat.tipus, 20);
  122. strupr(adat.tipus);
  123. cout << "Ár: ";
  124. cin >> adat.ar;
  125. cout << "Év: ";
  126. cin >> adat.ev;
  127.  
  128. ki.write((char *) &adat, sizeof(autost));// a file-ba hátra hozzáfűz
  129. ++db;
  130.  
  131. cout << "\nSzeretne új adatot felvenni (I/N)? ";
  132. cin.clear();
  133. cin >> c;
  134.  
  135. }while(toupper(c)=='I');
  136.  
  137. ki.close();
  138. cout << endl;
  139. return db;
  140. }
  141.  
  142. autost Legdragabb(char fnev[])
  143. {
  144. ifstream be(fnev, ios::binary);
  145.  
  146. if (be)
  147. {
  148. autost a;
  149.  
  150. autost ld={0,"","",0};
  151.  
  152. //-----------------Legdrágább kiválasztása--------------
  153.  
  154. while (be.read((char *)&a,sizeof(autost))) // amíg van beolvasott adat
  155. {
  156. if (a.ar>ld.ar)
  157. {
  158. ld=a;
  159. }
  160. }
  161.  
  162.  
  163. be.close();
  164.  
  165. return ld;
  166. }
  167.  
  168. else
  169. {
  170. cerr << "\nA(z) "<< fnev << " allomany nem letezik!\a\n\n";
  171. system("pause");
  172. exit(1);
  173. }
  174. }
  175.  
  176. double Legolcsobb(char fnev[])
  177. {
  178. ifstream be(fnev, ios::binary);
  179.  
  180. if (be)
  181. {
  182. autost a;
  183.  
  184. cout << "\nA legolcsóbb(ak):\n";
  185. //cout << "Rendszám Típus Ár Év\n\n";
  186.  
  187. cout.setf(ios::fixed | ios::left); // fixpontos megjelenítés, balra igazítás
  188.  
  189. double min=2000000000.0;
  190.  
  191. //-----------------Legolcsóbb(ak) kiválasztása--------------
  192.  
  193. while (be.read((char *)&a,sizeof(autost))) // amíg van beolvasott adat
  194. {
  195. if (a.ar<min)
  196. {
  197. min=a.ar;
  198. }
  199. }
  200.  
  201. be.clear();
  202. be.seekg(0); //be.seekg(0,ios::beg);
  203.  
  204.  
  205.  
  206.  
  207. //----------------Legolcsóbb(ak) kiíratása---------------
  208.  
  209. while (be.read((char *)&a,sizeof(autost)))
  210. {
  211.  
  212. if(a.ar==min)
  213. {
  214. cout << setw(8) << a.rendszam << setw(20) << a.tipus
  215. << setw(20) << setprecision(0) << a.ar
  216. << setw(8) << a.ev << endl;
  217. }
  218. }
  219.  
  220. be.close();
  221.  
  222. return min;
  223.  
  224. }
  225.  
  226. else
  227. {
  228. cerr << "\nA(z) " << fnev << " allomany nem letezik!\a\n\n";
  229. system("pause");
  230. exit(1);
  231. }
  232. }
  233.  
  234. bool KeresR(char fnev[], char rsz[]) // Keresés rendszám szerint
  235. {
  236. ifstream be(fnev, ios::binary);
  237.  
  238. if (be)
  239. {
  240. autost a;
  241. while (be.read((char *)&a,sizeof(autost)))
  242. {
  243.  
  244. if(strcmp(a.rendszam,rsz)==0)
  245. {
  246. be.close();
  247. cout << setw(8) << a.rendszam << setw(20) << a.tipus
  248. << setw(20) << setprecision(0) << a.ar
  249. << setw(8) << a.ev << endl;
  250. return true;
  251. }
  252. }
  253.  
  254. be.close();
  255.  
  256. return false;
  257.  
  258. }
  259.  
  260. else
  261. {
  262. cerr << "\nA(z) " << fnev << " allomany nem letezik!\a\n\n";
  263. system("pause");
  264. exit(1);
  265. }
  266. }
Add Comment
Please, Sign In to add comment