Advertisement
Guest User

Untitled

a guest
Mar 26th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <string>
  4. #include <sstream>
  5. #include <cstdlib>
  6. #include <iomanip>
  7.  
  8. using namespace std;
  9.  
  10. struct bankomat{
  11.     string numer_bankomatu;
  12.     int czesc_polski;
  13.     string miasto;
  14.     bool czy_dziala;
  15.     int liczba_10;
  16.     int liczba_20;
  17.     int liczba_50;
  18.     int liczba_100;
  19.     int liczba_200;
  20. };
  21. struct suma{
  22.     string numer_bankomatu;
  23.     int czesc_polski;
  24.     int suma_pieniedzy;
  25. };
  26.  
  27.  
  28. void wczytaj_dane_bankomatow(string sciezka, bankomat* &bankomaty, int &liczba_bankomatow, int &kwota_do_testowania);
  29. int gdzie_najwiecej_bankomatow(bankomat* bankomaty,int &liczba_bankomatow, int &czesc_polski);
  30. void flaga_franuska_wg_czesci_polski(bankomat* &bankomaty, int &liczba_bankomatow, int &granica1, int &granica2);
  31. void ile_dziala(bankomat* bankomaty, int &liczba_bankomatow, int &liczba_dzialajacych);
  32. void sumowanie(bankomat* bankomaty, suma *suma_pieniedzy, int &liczba_bankomatow);
  33.  
  34.  
  35. int main()
  36. {
  37.     bankomat* bn = nullptr;
  38.     int liczba_bankomatow;
  39.     int kwota_do_testowania;
  40.     wczytaj_dane_bankomatow("dane.csv", bn, liczba_bankomatow, kwota_do_testowania);
  41.  
  42.     for (int i = 0; i< liczba_bankomatow; i++)
  43.         cout <<bn[i].numer_bankomatu<<setw(10)<<bn[i].czesc_polski<<setw(15)<<bn[i].miasto<<setw(10)<<bn[i].czy_dziala<<setw(10)<<bn[i].liczba_10<<setw(10)<<bn[i].liczba_20<<setw(10)<<bn[i].liczba_50<<setw(10)<<bn[i].liczba_100<<setw(10)<<bn[i].liczba_200<<endl;
  44.     cout << endl;
  45.  
  46.     cout << "Zadanie 1" << endl << endl;
  47.     int czesc_polski,wynik;
  48.     wynik = gdzie_najwiecej_bankomatow(bn,liczba_bankomatow,czesc_polski);
  49.     cout << "Najwieksza liczba bankomatow to: " << wynik << " w " << czesc_polski << " czesci Polski." << endl << endl;
  50.  
  51.     int granica1, granica2;
  52.     flaga_franuska_wg_czesci_polski(bn, liczba_bankomatow, granica1, granica2);
  53.     cout << "Polnoc:" << endl;
  54.     for(int i=0; i<=granica1 ; i++)
  55.         cout << bn[i].numer_bankomatu<<" "<<bn[i].miasto<<endl;
  56.     cout << endl << "Centrum i zachod:" << endl;
  57.     for(int i=granica1+1; i<granica2 ; i++)
  58.         cout << bn[i].numer_bankomatu<<" w "<<bn[i].miasto<<endl;
  59.     cout << endl << "wschod i poludnie" << endl;
  60.     for(int i=granica2; i<liczba_bankomatow ; i++)
  61.         cout << bn[i].numer_bankomatu<<" w "<<bn[i].miasto<<endl;
  62.  
  63.     cout << endl << "Zadanie 2" << endl << endl;
  64.  
  65.     int liczba_dzialajacych;
  66.     suma suma_pieniedzy[liczba_dzialajacych];
  67.     sumowanie(bn,suma_pieniedzy,liczba_bankomatow);
  68.     for(int i=0; i<liczba_dzialajacych; i++)
  69.         cout << suma_pieniedzy[i].numer_bankomatu << ";" << suma_pieniedzy[i].czesc_polski << ";" << suma_pieniedzy[i].suma_pieniedzy << endl;
  70.  
  71.     cout << "Polnoc:" << endl;
  72.  
  73.     cout << "Najwiecej pieniedzy:" << endl;
  74.     cout << "Najmniej pieniedzy:" << endl << endl;
  75.  
  76.     cout << "Centrum i zachod:" << endl;
  77.  
  78.     cout << "Najwiecej pieniedzy:"  << endl;
  79.     cout << "Najmniej pieniedzy:"  << endl << endl;
  80.  
  81.     cout << "Wschod i poludnie:" << endl;
  82.  
  83.     cout << "Najwiecej pieniedzy:" << endl;
  84.     cout << "Najmniej pieniedzy:"<< endl;
  85.  
  86.     return 0;
  87. }
  88.  
  89. void wczytaj_dane_bankomatow(string sciezka, bankomat* &bankomaty, int &liczba_bankomatow, int &kwota_do_testowania){
  90.  
  91.     if (bankomaty!=nullptr)
  92.         return;
  93.  
  94.     ifstream plik;
  95.     plik.open(sciezka);
  96.  
  97.     string linia;
  98.     plik >> liczba_bankomatow;
  99.     bankomaty = new bankomat[liczba_bankomatow];
  100.     plik >> linia;
  101.     plik >> kwota_do_testowania;
  102.     plik >> linia;
  103.     string tmp_numer_bankomatu, tmp_czesc_polski, tmp_miasto, tmp_czy_dziala, tmp_liczba_10, tmp_liczba_20, tmp_liczba_50, tmp_liczba_100, tmp_liczba_200;
  104.  
  105.     for(int i=0; i<liczba_bankomatow; i++){
  106.  
  107.         plik>>linia;
  108.         istringstream ss(linia);
  109.         getline(ss, tmp_numer_bankomatu, ';');
  110.         getline(ss, tmp_czesc_polski, ';');
  111.         getline(ss, tmp_miasto, ';');
  112.         getline(ss, tmp_czy_dziala, ';');
  113.         getline(ss, tmp_liczba_10, ';');
  114.         getline(ss, tmp_liczba_20, ';');
  115.         getline(ss, tmp_liczba_50, ';');
  116.         getline(ss, tmp_liczba_100, ';');
  117.         getline(ss, tmp_liczba_200, ';');
  118.  
  119.         bankomaty[i].numer_bankomatu = tmp_numer_bankomatu;
  120.         bankomaty[i].czesc_polski = atoi(tmp_czesc_polski.c_str());
  121.         bankomaty[i].miasto = tmp_miasto;
  122.         bankomaty[i].czy_dziala = atoi(tmp_czy_dziala.c_str());
  123.         bankomaty[i].liczba_10 = atoi(tmp_liczba_10.c_str());
  124.         bankomaty[i].liczba_20 = atoi(tmp_liczba_20.c_str());
  125.         bankomaty[i].liczba_50 = atoi(tmp_liczba_50.c_str());
  126.         bankomaty[i].liczba_100 = atoi(tmp_liczba_100.c_str());
  127.         bankomaty[i].liczba_200 = atoi(tmp_liczba_200.c_str());
  128.     }
  129.     plik.close();
  130. }
  131.  
  132. void flaga_franuska_wg_czesci_polski(bankomat* &bankomaty, int &liczba_bankomatow, int &granica1, int &granica2){
  133.  
  134.     int i=-1, j=0, k=liczba_bankomatow;
  135.     while(j<k){
  136.         if(bankomaty[j].czesc_polski == 1){
  137.             i++;
  138.             swap(bankomaty[i],bankomaty[j]);
  139.             j++;
  140.         }
  141.         if(bankomaty[j].czesc_polski == 3){
  142.             k--;
  143.             swap(bankomaty[k],bankomaty[j]);
  144.         }
  145.         else
  146.             j++;
  147.     }
  148.     granica1 = i;
  149.     granica2 = j;
  150. }
  151. int gdzie_najwiecej_bankomatow(bankomat* bankomaty,int &liczba_bankomatow, int &czesc_polski){
  152.     int czesc_1= 0, czesc_2= 0, czesc_3= 0;
  153.     for(int i=0; i<liczba_bankomatow; i++){
  154.         if(bankomaty[i].czesc_polski == 1)
  155.             czesc_1++;
  156.         else if(bankomaty[i].czesc_polski == 2)
  157.             czesc_2++;
  158.         else
  159.             czesc_3++;
  160.     }
  161.     if(czesc_1>czesc_2)
  162.         if(czesc_1>czesc_3){
  163.             czesc_polski = 1;
  164.             return czesc_1;
  165.         }
  166.         else{
  167.             czesc_polski = 3;
  168.             return czesc_3;
  169.         }
  170.     else if(czesc_2>czesc_3){
  171.         czesc_polski = 2;
  172.         return czesc_2;
  173.     }
  174. }
  175. void ile_dziala(bankomat* bankomaty, int &liczba_bankomatow, int &liczba_dzialajacych){
  176.     for(int i=0; i<liczba_bankomatow; i++){
  177.         if(bankomaty[i].czy_dziala == 1)
  178.             liczba_dzialajacych++;
  179.     }
  180. }
  181. void sumowanie(bankomat* bankomaty, suma* suma_pieniedzy, int &liczba_bankomatow){
  182.     for(int i=0; i<liczba_bankomatow; i++){
  183.         if(bankomaty[i].czy_dziala == 1)
  184.             suma_pieniedzy[i].numer_bankomatu = bankomaty[i].numer_bankomatu;
  185.             suma_pieniedzy[i].czesc_polski = bankomaty[i].czesc_polski;
  186.             suma_pieniedzy[i].suma_pieniedzy = (bankomaty[i].liczba_10*10) + (bankomaty[i].liczba_20*20) + (bankomaty[i].liczba_50*50) + (bankomaty[i].liczba_100*100) + (bankomaty[i].liczba_200*200);
  187.     }
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement