Advertisement
irmantas_radavicius

Untitled

May 7th, 2024
541
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.42 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. struct Irasas {
  8.     string kas, kam;
  9.     int kiek;
  10. };
  11. struct Duomenys {
  12.     Irasas irasai[2500];
  13.     int kiek;
  14. };
  15.  
  16. Duomenys gautiDuomenis(){
  17.     Duomenys duom;
  18.     duom.kiek = 0;
  19.     ifstream in("Eurovizija.csv");
  20.     while(!in.fail()){
  21.         string eilute;
  22.         getline(in, eilute);
  23.         if(eilute.size() > 0){
  24.             Irasas irasas;
  25.             int pirma = eilute.find(';');
  26.             int antra = eilute.rfind(';');
  27.             irasas.kas = eilute.substr(0, pirma);
  28.             irasas.kam = eilute.substr(pirma+1, antra-pirma-1);
  29.             irasas.kiek = stoi(eilute.substr(antra+1));
  30.             //cout << irasas.kas << " " << irasas.kam << " " << irasas.kiek << endl;
  31.             duom.irasai[duom.kiek] = irasas;
  32.             duom.kiek++;
  33.         }
  34.     }
  35.     in.close();
  36.     return duom;
  37. }
  38. void spausdinti(Duomenys duom){
  39.     ofstream out("Rezultatai.txt");
  40.     out << "Pradinis sąrašas:" << endl;
  41.     for(int i = 0; i < duom.kiek; ++i){
  42.         out << duom.irasai[i].kas << " " << duom.irasai[i].kam << " " << duom.irasai[i].kiek << endl;
  43.     }
  44.     out << endl;
  45.     out.close();
  46. }
  47. void surikiuoti(Duomenys &duom){
  48.     for(int ii = 0; ii < duom.kiek; ++ii){
  49.         for(int i = 0; i < duom.kiek-1; ++i){
  50.             if(duom.irasai[i].kas > duom.irasai[i+1].kas){
  51.                 swap(duom.irasai[i], duom.irasai[i+1]);
  52.             } else if(duom.irasai[i].kas == duom.irasai[i+1].kas){
  53.                 if(duom.irasai[i].kiek < duom.irasai[i+1].kiek){
  54.                     swap(duom.irasai[i], duom.irasai[i+1]);
  55.                 }
  56.             }
  57.         }
  58.     }
  59. }
  60. void pateiktiSaliuSarasa(Duomenys &duom){
  61.     duom = gautiDuomenis();
  62.     surikiuoti(duom);
  63.     spausdinti(duom);
  64. }
  65.  
  66. Duomenys gautiBalus(Duomenys duom){
  67.     Duomenys balai;
  68.     balai.kiek = 0;
  69.     for(int i = 0; i < duom.kiek; ++i){
  70.         int arRadom = 0;
  71.         for(int ii = 0; ii < balai.kiek; ++ii){
  72.             if(balai.irasai[ii].kas == duom.irasai[i].kam){
  73.                 balai.irasai[ii].kiek += duom.irasai[i].kiek;
  74.                 arRadom = 1;
  75.                 break;
  76.             }
  77.         }
  78.         if(arRadom == 0){
  79.             balai.irasai[balai.kiek].kas = duom.irasai[i].kam;
  80.             balai.irasai[balai.kiek].kiek = duom.irasai[i].kiek;
  81.             balai.kiek++;
  82.         }
  83.     }
  84.     return balai;
  85. }
  86. void spausdintiBalus(Duomenys balai){
  87.     ofstream out("Rezultatai.txt", ostream::app);
  88.     out << "Šalių gauti taškai:" << endl;
  89.     for(int i = 0; i < balai.kiek; ++i){
  90.         out << balai.irasai[i].kas << " " << balai.irasai[i].kiek << endl;
  91.     }
  92.     out << endl;
  93.     out.close();
  94. }
  95. void pateiktiSaliuBalus(Duomenys duom){
  96.     Duomenys balai = gautiBalus(duom);
  97.     surikiuoti(balai);
  98.     spausdintiBalus(balai);
  99. }
  100.  
  101. Duomenys gautiGeriausius(Duomenys duom){
  102.     Duomenys geriausi;
  103.     geriausi.kiek = 0;
  104.     for(int i = 0; i < duom.kiek; ++i){
  105.         if(duom.irasai[i].kiek == 12){
  106.             int arRadom = 0;
  107.             for(int ii = 0; ii < geriausi.kiek; ++ii){
  108.                 if(geriausi.irasai[ii].kas == duom.irasai[i].kam){
  109.                     geriausi.irasai[ii].kiek++;
  110.                     arRadom = 1;
  111.                     break;
  112.                 }
  113.             }
  114.             if(arRadom == 0){
  115.                 geriausi.irasai[geriausi.kiek].kas = duom.irasai[i].kam;
  116.                 geriausi.irasai[geriausi.kiek].kiek = 1;
  117.                 geriausi.kiek++;
  118.             }
  119.         }
  120.     }
  121.     return geriausi;
  122. }
  123. void spausdintiGeriausius(Duomenys geriausi){
  124.     ofstream out("Rezultatai.txt", ostream::app);
  125.     int maksimumas = 0;
  126.     for(int i = 0; i < geriausi.kiek; ++i){
  127.         if(maksimumas < geriausi.irasai[i].kiek)
  128.             maksimumas = geriausi.irasai[i].kiek;
  129.     }
  130.     out << "Daugiausiai " << maksimumas << " kartų(-us) vienai šaliai buvo skirta 12 balų" << endl;
  131.     out << "Šios šalys yra:";
  132.     for(int i = 0; i < geriausi.kiek; ++i){
  133.         if(geriausi.irasai[i].kiek == maksimumas){
  134.             out << " " << geriausi.irasai[i].kas;
  135.         }
  136.     }
  137.     out.close();
  138. }
  139. void pateiktiGeriausius(Duomenys duom){
  140.     Duomenys geriausi = gautiGeriausius(duom);
  141.     surikiuoti(geriausi);
  142.     spausdintiGeriausius(geriausi);
  143. }
  144.  
  145.  
  146. int main(){
  147.  
  148.     Duomenys duom;
  149.     pateiktiSaliuSarasa(duom);
  150.     pateiktiSaliuBalus(duom);
  151.     pateiktiGeriausius(duom);
  152.  
  153.     return 0;
  154. }
  155.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement