Advertisement
Guest User

Untitled

a guest
Dec 19th, 2013
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.18 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <limits>
  5. #include "Matrica.h"
  6. #include <map>
  7.  
  8. using namespace  std;
  9.  
  10. const string CD = "Duomenys.txt";
  11. const string RF = "Rezultatai.txt";
  12. const int CMAX = 100;
  13.  
  14. void Skaityti(Matrica & M, Matrica & M2, string bankai[CMAX], int & kiekis);
  15. void SkaitytiMatrica(ifstream & fd, Matrica & M, int & kiekis);
  16. void Isvesti(Matrica M);
  17. void Atlyginimas(Matrica M, double atlyginimas[CMAX]);
  18. void IsvestiAtlyginimas(Matrica M, double atlyginimas[CMAX]);
  19. void Geriausias(Matrica M, double atlyginimas[CMAX], int & ind, double & did);
  20. void SpausdintiGeriausias(Matrica M, int ind, double did);
  21. void MaziausiaiDetaliu(Matrica M, int & mind);
  22. void SpMaziausiaiDetaliu(int mind);
  23. void AtrenkamSkirtingus(Matrica M, string bankai[], int & n);
  24. void TikSp(Matrica M, string bankai[], int n);
  25. void Pavedimai(Matrica M, double atlyginimas[CMAX], int n);
  26.  
  27. void AntroFailoDuom(Matrica M, Matrica & M2, int kiekis);
  28. void SpausintiFailoDuom(Matrica M2);
  29. void GerDarbininkasPoz(Matrica M, int ind, int ind2);
  30.  
  31. int main(){
  32.     setlocale(LC_ALL, "Lithuanian");
  33.     ofstream rf(RF);
  34.     rf.close();
  35.  
  36.     int ind = -1, ind2 = -1, mind = -1, mind2 = -1, kiekis = 1;
  37.     double atlyginimas[CMAX];
  38.     double did = 0.0, did2 = 0.0;
  39.     string bankai[CMAX];
  40.     Matrica M, M2, N;
  41.     string eil;
  42.     int n = 0;
  43.  
  44.     Skaityti(M, M2, bankai, kiekis);
  45.     Isvesti(M);
  46.     //AntroFailoDuom(M, M2, kiekis);
  47.     //SpausintiFailoDuom(M2);
  48.     Atlyginimas(M, atlyginimas);
  49.     IsvestiAtlyginimas(M, atlyginimas);
  50.     Geriausias(M, atlyginimas, ind, did);
  51.     SpausdintiGeriausias(M, ind, did);
  52.     MaziausiaiDetaliu(M, mind);
  53.     SpMaziausiaiDetaliu(mind);
  54.  
  55.     AtrenkamSkirtingus(M, bankai, n);
  56.     TikSp(M, bankai, n);
  57.     Pavedimai(M, atlyginimas, n);
  58.     AntroFailoDuom(M, M2, kiekis);
  59.     SpausintiFailoDuom(M2);
  60.     Atlyginimas(M2, atlyginimas);
  61.     IsvestiAtlyginimas(M2, atlyginimas);
  62.     Geriausias(M2, atlyginimas, ind2, did2);
  63.     SpausdintiGeriausias(M2, ind2, did2);
  64.     MaziausiaiDetaliu(M2, mind2);
  65.     SpMaziausiaiDetaliu(mind2);
  66.     Pavedimai(M2, atlyginimas, n);
  67.     GerDarbininkasPoz(M, ind, ind2);
  68.  
  69.     system("pause");
  70.     return 0;
  71. }
  72.  
  73. void Skaityti(Matrica & M, Matrica & M2, string bankai[CMAX], int & kiekis){
  74.     ifstream fd(CD);
  75.     int sk, men, failduom;
  76.     double kaina;
  77.     int d;
  78.     string vard, bank, nr;
  79.     fd >> sk >> men >> kaina;
  80.     M.DetiSK(sk);
  81.     M.DetiMen(men);
  82.     M.DetiKaina(kaina);
  83.  
  84.     for(int k = 0; k < M.ImtiSK(); k++){
  85.         fd >> ws;
  86.         getline(fd, vard, ',');
  87.         fd >> ws;
  88.         kiekis++;
  89.         getline(fd, bank, ',');
  90.         fd >> ws;
  91.         getline(fd, nr);
  92.         M.DetiVardas(vard, k);
  93.         M.DetiBankas(bank, k);
  94.         M.DetiNr(nr, k);
  95.         M2.DetiBankas(bank, k);
  96.         bankai[k] = bank;
  97.         M2.DetiNr(nr, k);
  98.         M2.DetiVardas(vard, k);
  99.     }
  100.     SkaitytiMatrica(fd, M, kiekis);
  101.     fd.close();
  102. }
  103.  
  104. void SkaitytiMatrica(ifstream & fd, Matrica & M, int & kiekis){
  105.     int d;
  106.     for(int i = 0; i < M.ImtiSK(); i++){
  107.         for(int j = 0; j < M.ImtiMen(); j++){
  108.             fd >> d;
  109.             M.DetiReiksme(i, j, d);
  110.         }
  111.         kiekis++;
  112.     }
  113. }
  114.  
  115. void Isvesti(Matrica M){
  116.     ofstream rf(RF, ios::app);
  117.     rf << string(25, '-') << "Pradiniai duomenys" << string(25, '-') << endl;
  118.     rf << M.ImtiSK() << ' ' << M.ImtiMen() << ' ' << M.ImtiKaina() << endl;
  119.     for(int k = 0; k < M.ImtiSK(); k++){
  120.         rf << M.ImtiVardas(k) << ' ' << M.ImtiBankas(k) << ' ' << M.ImtiNr(k) << endl;
  121.     }
  122.     rf << endl;
  123.     for(int v = 1; v <= M.ImtiMen(); v++){
  124.         rf << "  " << v << " ";
  125.     }
  126.     rf << endl;
  127.     for(int i = 0; i < M.ImtiSK(); i++){
  128.         rf << i+1 << " ";
  129.         for(int j = 0; j < M.ImtiMen(); j++){
  130.             rf << "| "<< M.ImtiReiksme(i, j) << ' ';
  131.         }
  132.         rf << '|' << endl;
  133.     }
  134.     rf << endl;
  135.     rf.close();
  136. }
  137.  
  138. void Atlyginimas(Matrica M, double atlyginimas[CMAX]){
  139.     for(int i=0; i<M.ImtiSK(); i++){
  140.         atlyginimas[i] = 0.0;
  141.         for(int j=0; j<M.ImtiMen(); j++){
  142.             atlyginimas[i] += M.ImtiKaina() * M.ImtiReiksme(i, j);
  143.         }
  144.     }
  145. }
  146.  
  147. void IsvestiAtlyginimas(Matrica M, double atlyginimas[CMAX]){
  148.     ofstream rf(RF, ios::app);
  149.     rf << string(25, '-') << "Rezultatai" << string(25, '-') << endl;
  150.     for(int i=0; i<M.ImtiSK(); i++){
  151.         rf << M.ImtiVardas(i) << " " << atlyginimas[i] << " Lt"<< endl;
  152.     }
  153.     rf.close();
  154. }
  155.  
  156. void Geriausias(Matrica M, double atlyginimas[CMAX], int & ind, double & did){
  157.     for(int i=0; i<M.ImtiSK(); i++){
  158.         if(did < atlyginimas[i]){
  159.             did = atlyginimas[i];
  160.             ind = i;
  161.         }
  162.     }
  163. }
  164.  
  165. void SpausdintiGeriausias(Matrica M, int ind, double did){
  166.     ofstream rf(RF, ios::app);
  167.     if(ind != -1){
  168.         rf << endl << "Geriausias darbuotojas yra " << M.ImtiVardas(ind) << " jo atlyginimas: " << did << " Lt" << endl;
  169.     }
  170.     rf.close();
  171. }
  172.  
  173. void MaziausiaiDetaliu(Matrica M, int & mind){
  174.     int sum[CMAX];
  175.     int maz = numeric_limits<int>::max();
  176.     for(int i=0; i<M.ImtiMen(); i++){
  177.         sum[i] = 0;
  178.         for(int j=0; j<M.ImtiSK(); j++){
  179.             sum[i] += M.ImtiReiksme(j, i);
  180.         }
  181.         if(maz > sum[i]){
  182.             maz = sum[i];
  183.             mind = i;
  184.         }
  185.     }
  186. }
  187.  
  188. void SpMaziausiaiDetaliu(int mind){
  189.     ofstream rf(RF, ios::app);
  190.     rf << endl << "Mažiausiai detalių buvo pagaminta: " << mind + 1 << " mėnesio dieną"<< endl;
  191.     rf.close();
  192. }
  193. bool ArYra(string Bankas, string bankai[], int n){
  194.     for(int i=0; i<6; i++){
  195.         if(bankai[i] == Bankas)
  196.             return true;
  197.     }
  198.     return false;
  199. }
  200. void AtrenkamSkirtingus(Matrica M, string bankai[], int & n){
  201.     n = 6;
  202.     for(int i=0; i<M.ImtiSK(); i++){
  203.         if(ArYra(M.ImtiBankas(i), bankai, n) == false)
  204.             bankai[n++] = M.ImtiBankas(i);
  205.     }
  206. }
  207.  
  208. void TikSp(Matrica M, string bankai[], int n){
  209.     for(int i=0; i<6; i++){
  210.         cout << bankai[i] << ": ";
  211.         for(int j=0; j<M.ImtiSK(); i++){
  212.             if(bankai[i] == M.ImtiBankas(i)){
  213.                 cout << M.ImtiVardas(i) << " " << M.ImtiNr(i) << endl;
  214.             }
  215.         }
  216.     }
  217. }
  218.  
  219. void Pavedimai(Matrica M, double atlyginimas[CMAX], int n){
  220.     string laik[CMAX];
  221.     ofstream rf(RF, ios::app);
  222.     rf << endl << string(25, '-') << "Banko pavedimų sąrašas" << string(25, '-') << endl << endl;
  223.     for(int i=0; i < M.ImtiSK(); i++){
  224.        
  225.         rf << "Vardas: " << M.ImtiVardas(i) << " Bankas: " << M.ImtiBankas(i) << " Pervedama suma: " << atlyginimas[i] << " Lt"<< endl;
  226.     }
  227.     rf << endl << string(70, '*') << endl << endl;
  228.     rf.close();
  229. }
  230.  
  231. void AntroFailoDuom(Matrica M, Matrica & M2, int kiekis){
  232.     ifstream fd(CD);
  233.     M2.DetiKaina(M.ImtiKaina());
  234.     string e;
  235.     int sk1, sk2;
  236.     fd >> sk1;
  237.     M2.DetiSK(sk1);
  238.     for(int i=0; i<kiekis; i++){
  239.         getline(fd, e);
  240.     }
  241.     fd >> sk2;
  242.     M2.DetiMen(sk2);
  243.     SkaitytiMatrica(fd, M2, kiekis);
  244.     fd.close();
  245. }
  246.  
  247. void SpausintiFailoDuom(Matrica M2){
  248.     ofstream rf(RF, ios::app);
  249.     rf << string(17, '-') << "Antro failo duomenys" << string(17, '-') << endl;
  250.     for(int v = 1; v <= M2.ImtiMen(); v++){
  251.         rf << "  " << v << " ";
  252.     }
  253.     rf << endl;
  254.     for(int i = 0; i < M2.ImtiSK(); i++){
  255.         rf << i + 1 << ' ';
  256.         for(int j = 0; j < M2.ImtiMen(); j++){
  257.             rf << "| " << M2.ImtiReiksme(i, j) << ' ';
  258.         }
  259.         rf << '|' << endl;
  260.     }
  261.     rf << string(50, '-') << endl;
  262.     rf.close();
  263. }
  264.  
  265. void GerDarbininkasPoz(Matrica M, int ind, int ind2){
  266.     ofstream rf(RF, ios::app);
  267.     if(ind == ind2){
  268.         rf << M.ImtiVardas(ind) << " savo pozicijos neužleido, jis ir antą mėnesį pagamino daugiausiai detalių." << endl;
  269.     }else{
  270.         rf << "Antrą mėnesį " << M.ImtiVardas(ind) << " užleido savo poziciją, nes antrą mėnesį daugiausiai detalių pagamino " << M.ImtiVardas(ind2)  << '.' << endl;
  271.     }
  272.     rf.close();
  273. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement