Advertisement
kaunas163

PRG-13-10-24-02

Nov 19th, 2013
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <iomanip>
  5. using namespace std;
  6. ofstream fr;
  7.  
  8. const int maks = 100;   // konst, nurodanti maks. galimą masyvo reikšmę
  9.  
  10. // failas, kuriame laikomi duomenys apie zoo sode esančius gyvūnus
  11. const char Zo[] = "zoo.txt";
  12. // failas, kuriame bus laikomi galutiniai skaičiavimai ar kiti duomenys
  13. const char Rez[] = "rez.txt";
  14.  
  15. // klasė ----------------------------------------------
  16. // zoo sode esančius gyvūnus aprašanti klasė
  17. class ZooSodas
  18. {
  19.     string gyvunas;     // gyvūnas
  20.     int kiekis;     // gyvūnų skaičius
  21. public:
  22.     void Dėti(string gyvunas, int kiekis);
  23.     string ImtiGyvūną()       { return gyvunas; }
  24.     int ImtiKiekį()        { return kiekis; }
  25. };
  26.  
  27. // suteikia klasės kintamiesiems naujas reikšmes
  28. void ZooSodas::Dėti(string gyvunas, int kiekis)
  29. {
  30.     ZooSodas::gyvunas = gyvunas;
  31.     ZooSodas::kiekis = kiekis;
  32. }
  33.  
  34. // prototipai -----------------------------------------
  35. void Skaityti(ZooSodas z1[], string & zooPav, int & gyvunSK);
  36. void NurodytiGyvunai(ZooSodas z1[], ZooSodas Z0[], int & ATRskaicius, int gyvunSK);
  37. void Išvedimas(ofstream & fr, ZooSodas Z0[], int & ATRskaicius);
  38.  
  39. // main funkcija --------------------------------------
  40. int main()
  41. {
  42.     setlocale(LC_ALL, "Lithuanian");
  43.     ZooSodas z1[maks];          // Klasės "Zoo" objektai
  44.     ZooSodas Z0[maks];      // masyvas, kuriame bus išrinkti gyvūnai
  45.     string zooPav; int gyvunSK;     // Zoo sodo pavadinimas ir gyvūnų skaičius
  46.     int ATRskaicius;            // atrinktų gyvūnų skaičius
  47.  
  48.     fr.open(Rez);
  49.     Skaityti(z1, zooPav, gyvunSK);      // funkcija, nuskaitanti pradinį failą
  50.     NurodytiGyvunai(z1, Z0, ATRskaicius, gyvunSK);  // funkcija, išrenkanti atitinkamus gyvūnus
  51.     Išvedimas(fr, Z0, ATRskaicius);        // funkcija, išvedanti atrinktus gyvūnus
  52.     fr.close();
  53.  
  54.     return 0;
  55. }
  56.  
  57. // funkcijos -----------------------------------------
  58. // skaito duomenis apie gyvūnus iš failo
  59. void Skaityti(ZooSodas z1[], string & zooPav, int & gyvunSK)
  60. {
  61.     string gyv;     // zoo sodo gyvūnas
  62.     int kiekis;     // šių gyvūnų skaičius
  63.  
  64.     ifstream fd(Zo);
  65.     fd >> zooPav >> gyvunSK;
  66.     for (int i = 0; i < gyvunSK; i++){
  67.         fd >> gyv >> kiekis;
  68.         z1[i].Dėti(gyv, kiekis);
  69.     }
  70.     fd.close();
  71. }
  72.  
  73. // skaičiuoja kiek yra gyvūnų pagal duotus kriterijus
  74. void NurodytiGyvunai(ZooSodas z1[], ZooSodas Z0[], int & ATRskaicius, int gyvunSK)
  75. {
  76.     int kiekis;     // laik. kint. gyvųnų skaičiui saugoti
  77.     int sk = 0;     // nurodytų gyvūnų skaičius
  78.     ATRskaicius = 0;
  79.  
  80.     cout << "Bus atrinkti gyvūnai neviršijantys nurodyto skaičiaus.\nĮveskite skaičių: ";
  81.     cin >> kiekis;
  82.     cout << endl;
  83.  
  84.     for (int i = 0; i < gyvunSK; i++){
  85.         if (z1[i].ImtiKiekį() <= kiekis){
  86.             sk++;
  87.             Z0[ATRskaicius++] = z1[i];
  88.         }
  89.     }
  90.     fr << "Gyvūnų, kurių yra nedaugiau nei " << kiekis << ", yra " << sk << endl;
  91. }
  92.  
  93. // išveda išrinktus gyvūnus į failą
  94. void Išvedimas(ofstream & fr, ZooSodas Z0[], int & ATRskaicius)
  95. {
  96.     fr << "----------------------\n";
  97.     fr << "Gyvūnas         Kiekis\n";
  98.     fr << "----------------------\n";
  99.     for (int i = 0; i < ATRskaicius; i++){
  100.         fr << setw(16) << left << Z0[i].ImtiGyvūną()
  101.         << setw(4) << right << Z0[i].ImtiKiekį()
  102.         << endl;
  103.     }
  104.     fr << "----------------------\n";
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement