Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* Ieva Jakšaitytė IF-3/4 2013.11.10
- Sode auga daug skirtingų vaismedžių. Tekstiniame faile yra vaismendžio
- pavadinimas, jo aukštis ir amžius. Pirmoje failo eilutėje yra sodo
- savininko pavardė ir vardas. Sukurkite klasę Vaismedis, kuri turėtų
- kintamuosius pavadinimui, amžiui ir aukščiui saugoti. Raskite, koks
- aukščiausio vaismedžio aukštis ir koks seniausio vaismedžio amžius.
- Papildykite programą veiksmais su dviem sodais. Kiekvieno sodo duomenys
- saugomi atskiruose failuose. Kuriame sode auga aukščiausias vaismedis? */
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <iomanip>
- using namespace std;
- const char SO1[] = "Sodas1.txt";
- const char SO2[] = "Sodas2.txt";
- const char REZ[] = "Rezultatai.txt";
- const int cmax = 100; // maksimalus masyvo dydis
- class Vaismedis
- {
- private:
- string pavadinimas; // vaismedžio pavadinimas
- int amzius, // vaismedžio amžius
- aukstis; // vaismedžio aukštis
- public:
- void Dėti(string pav, int am, int auks);
- string ImtiPav() { return pavadinimas; }
- int ImtiAmziu() { return amzius; }
- int ImtiAuksti() { return aukstis; }
- };
- void Vaismedis::Dėti(string pav, int am, int auks)
- {
- pavadinimas = pav;
- amzius = am;
- aukstis = auks;
- }
- // funkcijų prototipai
- void Skaitymas(const char fv[], Vaismedis V[], string & pavarde, string & vardas, int & medsk);
- int AuksciausioAukstis(Vaismedis V[], int medsk);
- int SeniausioAmzius(Vaismedis V[], int medsk);
- void Spausdina(ofstream & fout, Vaismedis V[], int medsk, string pavar, string var, string kelintas);
- int main()
- {
- setlocale(LC_ALL, "Lithuanian");
- Vaismedis v1[cmax], v2[cmax]; // objektai
- string s1pav, s1var; // pirmo sodo savininko pavardė ir vardas
- string s2pav, s2var; // antro sodo savininko pavardė ir vardas
- int medsk1, medsk2; // pirmo ir antro sodų medžių skaičius
- Skaitymas(SO1, v1, s1pav, s1var, medsk1);
- Skaitymas(SO2, v2, s2pav, s2var, medsk2);
- int auksciausias1 = AuksciausioAukstis(v1, medsk1);
- int seniausias1 = SeniausioAmzius(v1, medsk1);
- int auksciausias2 = AuksciausioAukstis(v2, medsk2);
- int seniausias2 = SeniausioAmzius(v2, medsk2);
- ofstream fout(REZ);
- Spausdina(fout, v1, medsk1, s1pav, s1var, "Pirmo");
- Spausdina(fout, v2, medsk2, s2pav, s2var, "Antro");
- fout << "Pirmas sodas.\n"
- << "Aukščiausio medžio aukštis yra: " << auksciausias1 << endl
- << "Seniausio medžio amžius yra: " << seniausias1
- << "\n\nAntras sodas.\n"
- << "Aukščiausio medžio aukštis yra: " << auksciausias2 << endl
- << "Seniausio medžio amžius yra: " << seniausias2 << "\n\n";
- if (auksciausias1 > auksciausias2)
- fout << "Aukščiausias medis yra aukštesnis pirmame sode.\n";
- else if (auksciausias2 > auksciausias1)
- fout << "Aukščiausias medis yra aukštesnis antrame sode.\n";
- else
- fout << "Aukščiausias medis abiejuose soduose yra vienodo aukščio.\n";
- fout.close();
- return 0;
- }
- // nuskaito pradinius duomenis iš failo
- void Skaitymas(const char fv[], Vaismedis V[], string & pavarde, string & vardas, int & medsk)
- {
- string pav;
- int aukstis, amzius;
- ifstream fin(fv);
- fin >> pavarde >> vardas >> medsk;
- for (int i = 0; i < medsk; i++) {
- fin >> pav >> amzius >> aukstis;
- V[i].Dėti(pav, amzius, aukstis);
- }
- fin.close();
- }
- // ieško koks yra aukščiausio vaismedžio aukštis
- int AuksciausioAukstis(Vaismedis V[], int medsk)
- {
- int aukstis = 0;
- for (int i = 0; i < medsk; i++) {
- if (V[i].ImtiAuksti() > aukstis)
- aukstis = V[i].ImtiAuksti();
- }
- return aukstis;
- }
- // ieško koks seniausio vaismedžio amžius
- int SeniausioAmzius(Vaismedis V[], int medsk)
- {
- int amzius = 0;
- for (int i = 0; i < medsk; i++) {
- if (V[i].ImtiAmziu() > amzius)
- amzius = V[i].ImtiAmziu();
- }
- return amzius;
- }
- // išveda pradinius rezultatus į galutinį failą
- void Spausdina(ofstream & fout, Vaismedis V[], int medsk, string pavar, string var, string kelintas)
- {
- fout << kelintas << " sodo savininkas: " << var << " " << pavar << endl
- << "Sodo medžiai:\n"
- << "Pavadinimas Amžius Aukštis\n";
- for (int i = 0; i < medsk; i++) {
- fout << setw(20) << left << V[i].ImtiPav()
- << setw(6) << right << V[i].ImtiAmziu()
- << setw(10) << right << V[i].ImtiAuksti()
- << endl;
- }
- fout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement