Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <iomanip>
- using namespace std;
- const int en=100;
- //-------------
- class Prekes
- {
- string pav,
- tiek;
- int kiek;
- double kain;
- public:
- Prekes(string kpav, string ktiek, int kkiek, double kkain);
- Prekes() {pav=""; tiek=""; kiek = 0; kain = 0; t=0; t1=0;}
- ~Prekes() {}
- bool LygintiPrekes(Prekes Lyginamoji);
- string ImtiPav() {return pav;}
- string ImtiTiek() {return tiek;}
- int ImtiKiek() {return kiek;}
- void DidintiKiek(int didinamasis) {kiek+=didinamasis;}
- double ImtiKain() {return kain;}
- int t;
- int t1;
- };
- //--------------
- void main()
- {
- ifstream fd;
- ofstream fr;
- string mpav,
- mtiek,
- tiekejas[en];
- int mkiek,
- n,
- tvarkytuViet=0,
- tiekViet=0,
- pasTiekPrekiu[en],
- tiekPrek[en][en],
- pasSitaTiekPrekiu=0;
- unsigned int pavIlg=0,
- tiekIlg=0;
- double mkain;
- Prekes PradPreke [en],
- Preke [en];
- //--------------------
- fd.open("duomenys.txt");
- fr.open("rezultatai.txt");
- //--------------------
- setlocale(LC_ALL, "Lithuanian");
- fd >> n;
- //skaitymas
- for (int i=0; i < n; i++)
- {
- fd >> mpav >> mkiek
- >> mkain >> mtiek;
- if (mpav.length() > pavIlg) pavIlg = mpav.length();
- if (mtiek.length() > tiekIlg) tiekIlg = mtiek.length();
- PradPreke[i] = Prekes(mpav, mtiek, mkiek, mkain);
- PradPreke[i].t=0;
- PradPreke[i].t1=0;
- }
- //Visko rasymas
- fr << "Pradiniai duomenys : " << endl;
- for (int i=0; i<n; i++)
- {
- fr << setw(pavIlg) << left << PradPreke[i].ImtiPav() << " " << setw(8) << PradPreke[i].ImtiKiek() << " "
- << setw(8) << PradPreke[i].ImtiKain() << " " << setw(tiekIlg) << PradPreke[i].ImtiTiek() << endl;
- }
- //Prekiu masyvo taisymas
- for (int i=0; i<n; i++)
- {
- if (PradPreke[i].t)
- {
- cout << "Prašoku" << endl;
- continue;
- }
- Preke[tvarkytuViet] = Prekes(PradPreke[i].ImtiPav(), PradPreke[i].ImtiTiek(),
- PradPreke[i].ImtiKiek(), PradPreke[i].ImtiKain());
- PradPreke[i].t = 1;
- for (int j=i+1; j<n; j++)
- {
- if (PradPreke[j].t) continue;
- if (PradPreke[i].LygintiPrekes(PradPreke[j]))
- {
- Preke[tvarkytuViet].DidintiKiek(PradPreke[j].ImtiKiek());
- PradPreke[j].t=1;
- }
- }
- ++tvarkytuViet;
- }
- //Tvarkytu Prekiu masyvo rasymas
- fr << "-----------------------";
- cout << endl << "tvarkytuViet = " << tvarkytuViet << endl;
- fr << endl << "Sutvarkytas prekiu masyvas:" << endl;
- for (int i=0; i < tvarkytuViet+1; i++)
- {
- if (Preke[i].ImtiKiek() == 0) continue;
- fr << setw(pavIlg) << left << Preke[i].ImtiPav() << " " << setw(8) << Preke[i].ImtiKiek() << " "
- << setw(8) << Preke[i].ImtiKain() << " " << setw(tiekIlg) << Preke[i].ImtiTiek() << endl;
- }
- //Prekiu Rūšiavimas pagal tiekėją
- for (int i=0; i<tvarkytuViet+1; i++)
- {
- if (Preke[i].t1) continue;
- tiekejas[tiekViet] = Preke[i].ImtiTiek();
- Preke[i].t1=1;
- for (int j=0; j < tvarkytuViet+1; j++)
- {
- if (tiekejas[tiekViet] != Preke[j].ImtiTiek()) continue;
- Preke[j].t1=1;
- pasSitaTiekPrekiu = pasTiekPrekiu[tiekViet];
- tiekPrek[tiekViet][pasTiekPrekiu[tiekViet]] = j;
- pasTiekPrekiu[tiekViet] +=1;
- }
- tiekViet+=1;
- }
- //Tiekejų rašymas
- fr << "-----------------------" << endl << "Prekiu sararas pagal tiekejus:" << endl;
- for (int i=0; i < tiekViet+1; i++)
- {
- fr << endl << setw(tiekIlg) <<tiekejas[i] << ":" << endl;
- for (int j=0; j<pasTiekPrekiu[i]; j++)
- fr << setw(pavIlg) <<Preke[tiekPrek[i][j]].ImtiPav()
- << setw(8) <<Preke[tiekPrek[i][j]].ImtiKiek()
- << setw(8) <<Preke[tiekPrek[i][j]].ImtiKain() << endl;
- }
- system("pause");
- }
- //---------------
- Prekes::Prekes(string kpav, string ktiek, int kkiek, double kkain) :
- pav(kpav), tiek(ktiek), kiek(kkiek), kain(kkain) {}
- //--------------
- bool Prekes::LygintiPrekes(Prekes Lyginamoji)
- {
- if ( (pav == Lyginamoji.ImtiPav()) &&
- (tiek == Lyginamoji.ImtiTiek()) &&
- (kain == Lyginamoji.ImtiKain()) )
- return true;
- else return false;
- }
Add Comment
Please, Sign In to add comment