Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <iomanip>
- using namespace std;
- ofstream fr; // nurodo išvedimo į failą funkcijos pavadinimą
- const int maks = 100; // maksimalus galimas masyvo dydis
- // failai, kuriuose saugomi duomenys apie parduotuvėje esančias prekes, bei failas, kuriame bus saugomi galutiniai skaičiavimai
- const char PR[] = "prekes.txt";
- const char Rez[] = "rez.txt";
- // klasė aprašanti kiekvieną parduotuvėje esančią prekę: jos pavadinimas, kiekis ir kaina
- class Parduotuvė
- {
- string pav; // prekės pavadinimas
- int kiekis; // esančių prekių kiekis
- double kaina; // prekės kaina
- public:
- void Dėti(string pav, int kiekis, double kaina);
- string ImtiPav() { return pav; }
- int ImtiKiekį() { return kiekis; }
- double ImtiKainą() { return kaina; }
- };
- // suteikia klasės kintamiesiems naujas reikšmes nurodomas parametrais: prekės pavadinimas, kiekis ir kaina
- void Parduotuvė::Dėti(string pav, int kiekis, double kaina)
- {
- Parduotuvė::pav = pav;
- Parduotuvė::kiekis = kiekis;
- Parduotuvė::kaina = kaina;
- }
- // prototipai -----------------------------------------------
- void Skaityti(Parduotuvė p1[], string & pardPav, int & prekiuSK);
- void Brangiausia(Parduotuvė p1[], int prekiuSK);
- void Daugiausiai(Parduotuvė p1[], int prekiuSK);
- void NurodytosPrekės(Parduotuvė p1[], Parduotuvė rez[], int prekiuSK, int & ISVskaicius);
- void Išvedimas(ofstream & fr, Parduotuvė rez[], int & ISVskaicius);
- // main funkcija --------------------------------------------
- int main()
- {
- setlocale(LC_ALL, "Lithuanian");
- Parduotuvė p1[maks], rez[maks]; // parduotuvės masyvas (objektas)
- string pardPav; int prekiuSK; // kintamieji aprašyti pard. pavadinimą ir prekių skaičių
- int ISVskaicius; // prekių pagal duotus kriterijus skaičius, išvedimui
- cout << "*** Pradžia ***\n\n";
- Skaityti(p1, pardPav, prekiuSK); // duomenų iš failo skaitymo funkcija
- fr.open(Rez); // atidaro failą į kurį rašys informaciją
- fr << pardPav << " parduotuvėje yra " << prekiuSK << " prekių(-ės).\n";
- Brangiausia(p1, prekiuSK); // funkcija, ieškanti brangiausios prekės
- Daugiausiai(p1, prekiuSK); // funkcija, ieškanti daugiausiai turimų prekių
- NurodytosPrekės(p1, rez, prekiuSK, ISVskaicius); // funkcija, ieškanti prekių pagal duotus kriterijus
- Išvedimas(fr, rez, ISVskaicius); // funkcija išvedanti duomenis apie nurodytis prekes
- fr.close();
- cout << "*** Pabaiga ***\n\n";
- return 0;
- }
- // funkcijos ------------------------------------------------
- /* 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*/
- void Skaityti(Parduotuvė p1[], string & pardPav, int & prekiuSK)
- {
- string pav; int kiekis; double kaina;
- ifstream fd(PR);
- fd >> pardPav >> prekiuSK;
- for(int i = 0; i < prekiuSK; i++){
- fd >> pav >> kiekis >> kaina;
- p1[i].Dėti(pav, kiekis, kaina);
- }
- fd.close();
- }
- // ieško kiek kainuoja brangiausia prekė parduotuvėje
- void Brangiausia(Parduotuvė p1[], int prekiuSK)
- {
- double tempKaina = 0; // laikinas kintamasis kainai saugoti
- string tempPav; // laikinas kint. saugoti prekės kainai
- // ciklas ieško brangiausios prekės, radus prilygi laikinąjam kintamajui
- for(int i = 0; i < prekiuSK; i++){
- if (p1[i].ImtiKainą() > tempKaina){
- tempKaina = p1[i].ImtiKainą();
- tempPav = p1[i].ImtiPav();
- }
- }
- // išveda gautą atsakymą
- fr << "Brangiausia prekė: " << tempPav << " (" << tempKaina << "Lt)\n";
- }
- // ieško kurių prekių parduotuvė turi daugiausiai
- void Daugiausiai(Parduotuvė p1[], int prekiuSK)
- {
- int tempKiekis = 0; // laikinas kintamasis saugoti prekių kiekiui
- string tempPav; // laikinas kintamasis saugoti prekės pavadinimui
- for (int i = 0; i < prekiuSK; i++){
- if (p1[i].ImtiKiekį() > tempKiekis){
- tempKiekis = p1[i].ImtiKiekį();
- tempPav = p1[i].ImtiPav();
- }
- }
- fr << "Parduotuvė daugiausiai turi šių prekių: " << tempPav << " (" << tempKiekis << ")\n\n";
- }
- // ieško prekių, kurių nėra daugiau nei pasirenka žmogus, ir kurios nekainuoja daugiau nei nurodyta kaina
- void NurodytosPrekės(Parduotuvė p1[], Parduotuvė rez[], int prekiuSK, int & ISVskaicius)
- {
- // kint. nurodantis prekių, kurios atitinka šiuos parametrus kiekį
- int skaicius = 0;
- ISVskaicius = 0;
- int kiekis; // laikinas kintamasis, nurodo prekių kiekį
- double kaina; // laikinas kintamasis, nurodo prekių kainą
- cout << "Bus atrinktos prekės, kurios neviršija pasirinkto kiekio ir kainos.\n";
- cout << "Įveskite prekių kiekį ir kainą (atskirti tarpu arba eilute)\n";
- cin >> kiekis >> kaina;
- for(int i = 0; i < prekiuSK; i++){
- if (p1[i].ImtiKiekį() <= kiekis && p1[i].ImtiKainą() <= kaina){
- skaicius++;
- rez[ISVskaicius++] = p1[i];
- }
- }
- fr << "Buvo pasirinkta rodyti prekes, kurių nėra daugiau nei " << kiekis << " ir nekainuoja daugiau nei " << kaina << "Lt.\n";
- fr << "Yra " << skaicius << " prekės(-ių) pagal nurodytos kriterijus.\n";
- }
- // prekių pagal duotus kriterijus duomenis išveda lentele į atskirą failą
- void Išvedimas(ofstream & fr, Parduotuvė rez[], int & ISVskaicius)
- {
- fr << "-------------------------------\n";
- fr << "Pavadinimas Kiekis Kaina \n";
- fr << "-------------------------------\n";
- for (int i = 0; i < ISVskaicius; i++){
- fr << setw(14) << left << rez[i].ImtiPav()
- << setw(8) << right << rez[i].ImtiKiekį()
- << setw(8) << rez[i].ImtiKainą() << endl;
- }
- fr << "-------------------------------\n";
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement