Guest User

Untitled

a guest
Jun 25th, 2018
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.33 KB | None | 0 0
  1. /*
  2. 3.  Ühes tekstifailis on mingi arv ridu. Faili nimi küsida kasutajalt. Faili igas reas on ühe töötaja nimi ja tema palk eurodes (nime ja palga vahel on eraldajaks tabulatsioonimärk). Moodustada globaalne vector-tüüpi dünaamiline massiiv, millesse paigutada kõigi töötajate andmed. Printida kõigi töötajate nimekiri. Leida ja printida kõigi töötajate keskmine palk. Printida nende töötajate nimekiri, kelle palk on üle keskmise. Leida nende töötajate palkade keskmine, kelle palk on suurem kui kõigi töötajate keskmine palk. Analoogselt printida keskmisest vähem palka saavate töötajate nimekiri ning nende keskmine palk.
  3.  
  4. Keskmise palga arvutamiseks moodustage funktsioon
  5.  
  6.     int arvutaKeskmine(int minPalk, maxPalk);
  7.  
  8. ja töötajate nimekirja printimiseks funktsioon
  9.  
  10. void prindiNimekiri(string pealkiri, int minPalk,
  11.  maxPalk);
  12.  
  13. Testprogrammis main() kasutage nimetatud funktsioone.
  14. */
  15. #include <iostream>
  16. #include <fstream>
  17. #include <stdlib.h>
  18. #include <vector>
  19.  
  20.  
  21. using namespace std;
  22.  
  23. string leiaTootaja(int indeks);
  24. int leiaPalk(int indeks);
  25. int arvutaKeskminePalk();
  26. void kuvaTootajad();
  27. void kuvaTootajadKeskmineSuurem();
  28. int yleKeskmiseKeskminePalk();
  29. void kuvaTootajadKeskmineVaiksem();
  30. int allaKeskmiseKeskminePalk();
  31. vector<string> andmed;
  32.  
  33. int main()
  34. {
  35.     ifstream sisend("test.txt");
  36.     if(!sisend.is_open())
  37.     {
  38.         cout << "Faili ei saa avada!\n";
  39.         return 1;
  40.     }
  41.  
  42.     while(sisend.good())
  43.     {
  44.         string rida;
  45.         getline(sisend, rida);
  46.         andmed.push_back(rida);
  47.     }
  48.     cout << "*******************\n";
  49.     for(int i = 0; i < (int)andmed.size(); i++)
  50.     {
  51.         cout << i + 1 << ".  " << andmed[i] << endl;
  52.     }
  53.  
  54.     cout << "Keskmine palk " << arvutaKeskminePalk() << endl;
  55.     kuvaTootajad();
  56.     kuvaTootajadKeskmineSuurem();
  57.     cout << "\nÜle keskmiste keskmine palk " << yleKeskmiseKeskminePalk() << endl;
  58.     kuvaTootajadKeskmineVaiksem();
  59.     cout << "\nAlla keskmiste keskmine palk " << allaKeskmiseKeskminePalk() << endl;
  60. }
  61.  
  62. string leiaTootaja(int indeks)
  63. {
  64.     int pos = andmed[indeks].find_first_of('\t');
  65.     return andmed[indeks].substr(0, pos);
  66. }
  67. int leiaPalk(int indeks)
  68. {
  69.     int pos = andmed[indeks].find_first_of('\t');
  70.  
  71.     return atoi(andmed[indeks].substr(pos).c_str());
  72. }
  73.  
  74. int arvutaKeskminePalk()
  75. {
  76.     int keskmine = 0, i = 0;
  77.     for(i = 0; i < (int)andmed.size(); i++)
  78.     {
  79.         keskmine += leiaPalk(i);
  80.     }
  81.     return keskmine / i;
  82. }
  83.  
  84. void kuvaTootajad()
  85. {
  86.     cout << "**********TÖÖTAJAD**********\n";
  87.     for(int i = 0; i < (int)andmed.size(); i++)
  88.     {
  89.         cout << i + 1 << ". " << leiaTootaja(i) << endl;
  90.     }
  91.     cout << "\n";
  92. }
  93.  
  94. void kuvaTootajadKeskmineSuurem() // töötajate nimekiri, kelle palk on üle keskmise
  95. {
  96.     cout << "**********TÖÖTAJAD ÜLE KESKMISE PALGAGA**********\n";
  97.     int keskminePalk = arvutaKeskminePalk();
  98.     int mitmes = 1;
  99.     for(int i = 0; i < (int)andmed.size(); i++)
  100.     {
  101.         if(leiaPalk(i) > keskminePalk)
  102.         {
  103.             cout << mitmes << ". " << leiaTootaja(i) << endl;
  104.             mitmes++;
  105.         }
  106.     }
  107.     cout << "\n";
  108. }
  109.  
  110. int yleKeskmiseKeskminePalk() // nende töötajate palkade keskmine, kelle palk on suurem kui kõigi töötajate keskmine palk
  111. {
  112.     int keskminePalk = arvutaKeskminePalk();
  113.     int keskmiseKeskmine = 0, mitu = 0;
  114.     for(int i = 0; i < (int)andmed.size(); i++)
  115.     {
  116.         if(leiaPalk(i) > keskminePalk)
  117.         {
  118.             keskmiseKeskmine += leiaPalk(i);
  119.             mitu++;
  120.         }
  121.     }
  122.     return keskmiseKeskmine / mitu;
  123. }
  124.  
  125. void kuvaTootajadKeskmineVaiksem() // töötajate nimekiri, kelle palk on alla keskmise
  126. {
  127.     cout << "**********TÖÖTAJAD ALLA KESKMISE PALGAGA**********\n";
  128.     int keskminePalk = arvutaKeskminePalk();
  129.     int mitmes = 1;
  130.     for(int i = 0; i < (int)andmed.size(); i++)
  131.     {
  132.         if(leiaPalk(i) < keskminePalk)
  133.         {
  134.             cout << mitmes << ". " << leiaTootaja(i) << endl;
  135.             mitmes++;
  136.         }
  137.     }
  138.     cout << "\n";
  139. }
  140.  
  141. int allaKeskmiseKeskminePalk() // nende töötajate palkade keskmine, kelle palk on väiksem kui kõigi töötajate keskmine palk
  142. {
  143.     int keskminePalk = arvutaKeskminePalk();
  144.     int keskmiseKeskmine = 0, mitu = 0;
  145.     for(int i = 0; i < (int)andmed.size(); i++)
  146.     {
  147.         if(leiaPalk(i) < keskminePalk)
  148.         {
  149.             keskmiseKeskmine += leiaPalk(i);
  150.             mitu++;
  151.         }
  152.     }
  153.     return keskmiseKeskmine / mitu;
  154. }
Add Comment
Please, Sign In to add comment