Advertisement
kaunas163

PRG-13-10-24-01

Nov 19th, 2013
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.56 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <iomanip>
  5. using namespace std;
  6. ofstream fr;        // nurodo išvedimo į failą funkcijos pavadinimą
  7.  
  8. const int maks = 100;   // maksimalus galimas masyvo dydis
  9.  
  10. // failai, kuriuose saugomi duomenys apie parduotuvėje esančias prekes, bei failas, kuriame bus saugomi galutiniai skaičiavimai
  11. const char PR[] = "prekes.txt";
  12. const char Rez[] = "rez.txt";
  13.  
  14. // klasė aprašanti kiekvieną parduotuvėje esančią prekę: jos pavadinimas, kiekis ir kaina
  15. class Parduotuvė
  16. {
  17.     string  pav;        // prekės pavadinimas
  18.     int kiekis;     // esančių prekių kiekis
  19.     double  kaina;      // prekės kaina
  20. public:
  21.     void Dėti(string pav, int kiekis, double kaina);
  22.     string  ImtiPav()   { return pav;   }
  23.     int ImtiKiekį()    { return kiekis;    }
  24.     double  ImtiKainą()    { return kaina; }
  25. };
  26.  
  27. // suteikia klasės kintamiesiems naujas reikšmes nurodomas parametrais: prekės pavadinimas, kiekis ir kaina
  28. void Parduotuvė::Dėti(string pav, int kiekis, double kaina)
  29. {
  30.     Parduotuvė::pav = pav;
  31.     Parduotuvė::kiekis = kiekis;
  32.     Parduotuvė::kaina = kaina;
  33. }
  34.  
  35. // prototipai -----------------------------------------------
  36. void Skaityti(Parduotuvė p1[], string & pardPav, int & prekiuSK);
  37. void Brangiausia(Parduotuvė p1[], int prekiuSK);
  38. void Daugiausiai(Parduotuvė p1[], int prekiuSK);
  39. void NurodytosPrekės(Parduotuvė p1[], Parduotuvė rez[], int prekiuSK, int & ISVskaicius);
  40. void Išvedimas(ofstream & fr, Parduotuvė rez[], int & ISVskaicius);
  41.  
  42. // main funkcija --------------------------------------------
  43. int main()
  44. {
  45.     setlocale(LC_ALL, "Lithuanian");
  46.     Parduotuvė p1[maks], rez[maks];    // parduotuvės masyvas (objektas)
  47.     string pardPav; int prekiuSK;   // kintamieji aprašyti pard. pavadinimą ir prekių skaičių
  48.     int ISVskaicius;        // prekių pagal duotus kriterijus skaičius, išvedimui
  49.     cout << "*** Pradžia ***\n\n";
  50.  
  51.     Skaityti(p1, pardPav, prekiuSK);    // duomenų iš failo skaitymo funkcija
  52.     fr.open(Rez);       // atidaro failą į kurį rašys informaciją
  53.  
  54.     fr << pardPav << " parduotuvėje yra " << prekiuSK << " prekių(-ės).\n";
  55.  
  56.     Brangiausia(p1, prekiuSK);      // funkcija, ieškanti brangiausios prekės
  57.     Daugiausiai(p1, prekiuSK);      // funkcija, ieškanti daugiausiai turimų prekių
  58.     NurodytosPrekės(p1, rez, prekiuSK, ISVskaicius);   // funkcija, ieškanti prekių pagal duotus kriterijus
  59.     Išvedimas(fr, rez, ISVskaicius);       // funkcija išvedanti duomenis apie nurodytis prekes
  60.     fr.close();
  61.  
  62.     cout << "*** Pabaiga ***\n\n";
  63.    
  64.     return 0;
  65. }
  66.  
  67. // funkcijos ------------------------------------------------
  68. /* funkcija skaitanti duomenis iš failo pirma pasiėma parduotuvės pavadinimą, tada prekių skaičių prekes ima iš eilės išsirinkdama pavadinimus, kiekius ir kainas*/
  69. void Skaityti(Parduotuvė p1[], string & pardPav, int & prekiuSK)
  70. {
  71.     string pav; int kiekis; double kaina;
  72.     ifstream fd(PR);
  73.     fd >> pardPav >> prekiuSK;
  74.     for(int i = 0; i < prekiuSK; i++){
  75.         fd >> pav >> kiekis >> kaina;
  76.         p1[i].Dėti(pav, kiekis, kaina);
  77.     }
  78.     fd.close();
  79. }
  80.  
  81. // ieško kiek kainuoja brangiausia prekė parduotuvėje
  82. void Brangiausia(Parduotuvė p1[], int prekiuSK)
  83. {
  84.     double tempKaina = 0;   // laikinas kintamasis kainai saugoti
  85.     string tempPav;     // laikinas kint. saugoti prekės kainai
  86.  
  87.     // ciklas ieško brangiausios prekės, radus prilygi laikinąjam kintamajui
  88.     for(int i = 0; i < prekiuSK; i++){
  89.         if (p1[i].ImtiKainą() > tempKaina){
  90.             tempKaina = p1[i].ImtiKainą();
  91.             tempPav = p1[i].ImtiPav();
  92.         }
  93.     }
  94.     // išveda gautą atsakymą
  95.     fr << "Brangiausia prekė: " << tempPav << " (" << tempKaina << "Lt)\n";
  96. }
  97.  
  98. // ieško kurių prekių parduotuvė turi daugiausiai
  99. void Daugiausiai(Parduotuvė p1[], int prekiuSK)
  100. {
  101.     int tempKiekis = 0;     // laikinas kintamasis saugoti prekių kiekiui
  102.     string tempPav;     // laikinas kintamasis saugoti prekės pavadinimui
  103.  
  104.     for (int i = 0; i < prekiuSK; i++){
  105.         if (p1[i].ImtiKiekį() > tempKiekis){
  106.             tempKiekis = p1[i].ImtiKiekį();
  107.             tempPav = p1[i].ImtiPav();
  108.         }
  109.     }
  110.     fr << "Parduotuvė daugiausiai turi šių prekių: " << tempPav << " (" << tempKiekis << ")\n\n";
  111. }
  112.  
  113. // ieško prekių, kurių nėra daugiau nei pasirenka žmogus, ir kurios nekainuoja daugiau nei nurodyta kaina
  114. void NurodytosPrekės(Parduotuvė p1[], Parduotuvė rez[], int prekiuSK, int & ISVskaicius)
  115. {
  116.     // kint. nurodantis prekių, kurios atitinka šiuos parametrus kiekį
  117.     int skaicius = 0;
  118.     ISVskaicius = 0;
  119.  
  120.     int kiekis; // laikinas kintamasis, nurodo prekių kiekį
  121.     double kaina;   // laikinas kintamasis, nurodo prekių kainą
  122.  
  123.     cout << "Bus atrinktos prekės, kurios neviršija pasirinkto kiekio ir kainos.\n";
  124.     cout << "Įveskite prekių kiekį ir kainą (atskirti tarpu arba eilute)\n";
  125.     cin >> kiekis >> kaina;
  126.  
  127.     for(int i = 0; i < prekiuSK; i++){
  128.         if (p1[i].ImtiKiekį() <= kiekis && p1[i].ImtiKainą() <= kaina){
  129.             skaicius++;
  130.             rez[ISVskaicius++] = p1[i];
  131.         }
  132.     }
  133.     fr << "Buvo pasirinkta rodyti prekes, kurių nėra daugiau nei " << kiekis << " ir nekainuoja daugiau nei " << kaina << "Lt.\n";
  134.     fr << "Yra " << skaicius << " prekės(-ių) pagal nurodytos kriterijus.\n";
  135. }
  136.  
  137. // prekių pagal duotus kriterijus duomenis išveda lentele į atskirą failą
  138. void Išvedimas(ofstream & fr, Parduotuvė rez[], int & ISVskaicius)
  139. {
  140.     fr << "-------------------------------\n";
  141.     fr << "Pavadinimas      Kiekis  Kaina  \n";
  142.     fr << "-------------------------------\n";
  143.     for (int i = 0; i < ISVskaicius; i++){
  144.         fr << setw(14) << left << rez[i].ImtiPav()
  145.         << setw(8) << right << rez[i].ImtiKiekį()
  146.         << setw(8) << rez[i].ImtiKainą() << endl;
  147.     }
  148.     fr << "-------------------------------\n";
  149. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement