Advertisement
kaunas163

2013.11.10 kažkuris laboratorinis darbas

Feb 18th, 2014
165
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.27 KB | None | 0 0
  1. /* Ieva Jakšaitytė IF-3/4 2013.11.10
  2.  
  3. Sode auga daug skirtingų vaismedžių. Tekstiniame faile yra vaismendžio
  4. pavadinimas, jo aukštis ir amžius. Pirmoje failo eilutėje yra sodo
  5. savininko pavardė ir vardas. Sukurkite klasę Vaismedis, kuri turėtų
  6. kintamuosius pavadinimui, amžiui ir aukščiui saugoti. Raskite, koks
  7. aukščiausio vaismedžio aukštis ir koks seniausio vaismedžio amžius.
  8.  
  9. Papildykite programą veiksmais su dviem sodais. Kiekvieno sodo duomenys
  10. saugomi atskiruose failuose. Kuriame sode auga aukščiausias vaismedis? */
  11.  
  12. #include <iostream>
  13. #include <string>
  14. #include <fstream>
  15. #include <iomanip>
  16. using namespace std;
  17.  
  18. const char SO1[] = "Sodas1.txt";
  19. const char SO2[] = "Sodas2.txt";
  20. const char REZ[] = "Rezultatai.txt";
  21. const int cmax = 100;       // maksimalus masyvo dydis
  22.  
  23. class Vaismedis
  24. {
  25. private:
  26.     string pavadinimas;     // vaismedžio pavadinimas
  27.     int     amzius,         // vaismedžio amžius
  28.             aukstis;        // vaismedžio aukštis
  29. public:
  30.     void Dėti(string pav, int am, int auks);
  31.     string ImtiPav()    { return pavadinimas;   }
  32.     int ImtiAmziu()     { return amzius;        }
  33.     int ImtiAuksti()    { return aukstis;       }
  34. };
  35.  
  36. void Vaismedis::Dėti(string pav, int am, int auks)
  37. {
  38.     pavadinimas = pav;
  39.     amzius = am;
  40.     aukstis = auks;
  41. }
  42.  
  43. // funkcijų prototipai
  44. void Skaitymas(const char fv[], Vaismedis V[], string & pavarde, string & vardas, int & medsk);
  45. int AuksciausioAukstis(Vaismedis V[], int medsk);
  46. int SeniausioAmzius(Vaismedis V[], int medsk);
  47. void Spausdina(ofstream & fout, Vaismedis V[], int medsk, string pavar, string var, string kelintas);
  48.  
  49. int main()
  50. {
  51.     setlocale(LC_ALL, "Lithuanian");
  52.  
  53.     Vaismedis v1[cmax], v2[cmax];   // objektai
  54.     string s1pav, s1var;            // pirmo sodo savininko pavardė ir vardas
  55.     string s2pav, s2var;            // antro sodo savininko pavardė ir vardas
  56.     int medsk1, medsk2;             // pirmo ir antro sodų medžių skaičius
  57.  
  58.     Skaitymas(SO1, v1, s1pav, s1var, medsk1);
  59.     Skaitymas(SO2, v2, s2pav, s2var, medsk2);
  60.  
  61.     int auksciausias1 = AuksciausioAukstis(v1, medsk1);
  62.     int seniausias1 = SeniausioAmzius(v1, medsk1);
  63.     int auksciausias2 = AuksciausioAukstis(v2, medsk2);
  64.     int seniausias2 = SeniausioAmzius(v2, medsk2);
  65.  
  66.     ofstream fout(REZ);
  67.  
  68.     Spausdina(fout, v1, medsk1, s1pav, s1var, "Pirmo");
  69.     Spausdina(fout, v2, medsk2, s2pav, s2var, "Antro");
  70.     fout << "Pirmas sodas.\n"
  71.         << "Aukščiausio medžio aukštis yra: " << auksciausias1 << endl
  72.         << "Seniausio medžio amžius yra: " << seniausias1
  73.         << "\n\nAntras sodas.\n"
  74.         << "Aukščiausio medžio aukštis yra: " << auksciausias2 << endl
  75.         << "Seniausio medžio amžius yra: " << seniausias2 << "\n\n";
  76.     if (auksciausias1 > auksciausias2)
  77.         fout << "Aukščiausias medis yra aukštesnis pirmame sode.\n";
  78.     else if (auksciausias2 > auksciausias1)
  79.         fout << "Aukščiausias medis yra aukštesnis antrame sode.\n";
  80.     else
  81.         fout << "Aukščiausias medis abiejuose soduose yra vienodo aukščio.\n";
  82.     fout.close();
  83.  
  84.     return 0;
  85. }
  86.  
  87. // nuskaito pradinius duomenis iš failo
  88. void Skaitymas(const char fv[], Vaismedis V[], string & pavarde, string & vardas, int & medsk)
  89. {
  90.     string pav;
  91.     int aukstis, amzius;
  92.  
  93.     ifstream fin(fv);
  94.     fin >> pavarde >> vardas >> medsk;
  95.     for (int i = 0; i < medsk; i++) {
  96.         fin >> pav >> amzius >> aukstis;
  97.         V[i].Dėti(pav, amzius, aukstis);
  98.     }
  99.     fin.close();
  100. }
  101.  
  102. // ieško koks yra aukščiausio vaismedžio aukštis
  103. int AuksciausioAukstis(Vaismedis V[], int medsk)
  104. {
  105.     int aukstis = 0;
  106.     for (int i = 0; i < medsk; i++) {
  107.         if (V[i].ImtiAuksti() > aukstis)
  108.             aukstis = V[i].ImtiAuksti();
  109.     }
  110.     return aukstis;
  111. }
  112.  
  113. // ieško koks seniausio vaismedžio amžius
  114. int SeniausioAmzius(Vaismedis V[], int medsk)
  115. {
  116.     int amzius = 0;
  117.     for (int i = 0; i < medsk; i++) {
  118.         if (V[i].ImtiAmziu() > amzius)
  119.             amzius = V[i].ImtiAmziu();
  120.     }
  121.     return amzius;
  122. }
  123.  
  124. // išveda pradinius rezultatus į galutinį failą
  125. void Spausdina(ofstream & fout, Vaismedis V[], int medsk, string pavar, string var, string kelintas)
  126. {
  127.     fout << kelintas << " sodo savininkas: " << var << " " << pavar << endl
  128.         << "Sodo medžiai:\n"
  129.         << "Pavadinimas         Amžius   Aukštis\n";
  130.     for (int i = 0; i < medsk; i++) {
  131.         fout << setw(20) << left << V[i].ImtiPav()
  132.             << setw(6) << right << V[i].ImtiAmziu()
  133.             << setw(10) << right << V[i].ImtiAuksti()
  134.             << endl;
  135.     }
  136.     fout << endl;
  137. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement