Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <sstream>
- #include <cstdlib>
- #include <iomanip>
- using namespace std;
- struct bankomat{
- string numer_bankomatu;
- int czesc_polski;
- string miasto;
- bool czy_dziala;
- int liczba_10;
- int liczba_20;
- int liczba_50;
- int liczba_100;
- int liczba_200;
- };
- struct suma{
- string numer_bankomatu;
- int czesc_polski;
- int suma_pieniedzy;
- };
- void wczytaj_dane_bankomatow(string sciezka, bankomat* &bankomaty, int &liczba_bankomatow, int &kwota_do_testowania);
- int gdzie_najwiecej_bankomatow(bankomat* bankomaty,int &liczba_bankomatow, int &czesc_polski);
- void flaga_franuska_wg_czesci_polski(bankomat* &bankomaty, int &liczba_bankomatow, int &granica1, int &granica2);
- void ile_dziala(bankomat* bankomaty, int &liczba_bankomatow, int &liczba_dzialajacych);
- void sumowanie(bankomat* bankomaty, suma *suma_pieniedzy, int &liczba_bankomatow);
- int main()
- {
- bankomat* bn = nullptr;
- int liczba_bankomatow;
- int kwota_do_testowania;
- wczytaj_dane_bankomatow("dane.csv", bn, liczba_bankomatow, kwota_do_testowania);
- for (int i = 0; i< liczba_bankomatow; i++)
- 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;
- cout << endl;
- cout << "Zadanie 1" << endl << endl;
- int czesc_polski,wynik;
- wynik = gdzie_najwiecej_bankomatow(bn,liczba_bankomatow,czesc_polski);
- cout << "Najwieksza liczba bankomatow to: " << wynik << " w " << czesc_polski << " czesci Polski." << endl << endl;
- int granica1, granica2;
- flaga_franuska_wg_czesci_polski(bn, liczba_bankomatow, granica1, granica2);
- cout << "Polnoc:" << endl;
- for(int i=0; i<=granica1 ; i++)
- cout << bn[i].numer_bankomatu<<" "<<bn[i].miasto<<endl;
- cout << endl << "Centrum i zachod:" << endl;
- for(int i=granica1+1; i<granica2 ; i++)
- cout << bn[i].numer_bankomatu<<" w "<<bn[i].miasto<<endl;
- cout << endl << "wschod i poludnie" << endl;
- for(int i=granica2; i<liczba_bankomatow ; i++)
- cout << bn[i].numer_bankomatu<<" w "<<bn[i].miasto<<endl;
- cout << endl << "Zadanie 2" << endl << endl;
- int liczba_dzialajacych;
- suma suma_pieniedzy[liczba_dzialajacych];
- sumowanie(bn,suma_pieniedzy,liczba_bankomatow);
- for(int i=0; i<liczba_dzialajacych; i++)
- cout << suma_pieniedzy[i].numer_bankomatu << ";" << suma_pieniedzy[i].czesc_polski << ";" << suma_pieniedzy[i].suma_pieniedzy << endl;
- cout << "Polnoc:" << endl;
- cout << "Najwiecej pieniedzy:" << endl;
- cout << "Najmniej pieniedzy:" << endl << endl;
- cout << "Centrum i zachod:" << endl;
- cout << "Najwiecej pieniedzy:" << endl;
- cout << "Najmniej pieniedzy:" << endl << endl;
- cout << "Wschod i poludnie:" << endl;
- cout << "Najwiecej pieniedzy:" << endl;
- cout << "Najmniej pieniedzy:"<< endl;
- return 0;
- }
- void wczytaj_dane_bankomatow(string sciezka, bankomat* &bankomaty, int &liczba_bankomatow, int &kwota_do_testowania){
- if (bankomaty!=nullptr)
- return;
- ifstream plik;
- plik.open(sciezka);
- string linia;
- plik >> liczba_bankomatow;
- bankomaty = new bankomat[liczba_bankomatow];
- plik >> linia;
- plik >> kwota_do_testowania;
- plik >> linia;
- 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;
- for(int i=0; i<liczba_bankomatow; i++){
- plik>>linia;
- istringstream ss(linia);
- getline(ss, tmp_numer_bankomatu, ';');
- getline(ss, tmp_czesc_polski, ';');
- getline(ss, tmp_miasto, ';');
- getline(ss, tmp_czy_dziala, ';');
- getline(ss, tmp_liczba_10, ';');
- getline(ss, tmp_liczba_20, ';');
- getline(ss, tmp_liczba_50, ';');
- getline(ss, tmp_liczba_100, ';');
- getline(ss, tmp_liczba_200, ';');
- bankomaty[i].numer_bankomatu = tmp_numer_bankomatu;
- bankomaty[i].czesc_polski = atoi(tmp_czesc_polski.c_str());
- bankomaty[i].miasto = tmp_miasto;
- bankomaty[i].czy_dziala = atoi(tmp_czy_dziala.c_str());
- bankomaty[i].liczba_10 = atoi(tmp_liczba_10.c_str());
- bankomaty[i].liczba_20 = atoi(tmp_liczba_20.c_str());
- bankomaty[i].liczba_50 = atoi(tmp_liczba_50.c_str());
- bankomaty[i].liczba_100 = atoi(tmp_liczba_100.c_str());
- bankomaty[i].liczba_200 = atoi(tmp_liczba_200.c_str());
- }
- plik.close();
- }
- void flaga_franuska_wg_czesci_polski(bankomat* &bankomaty, int &liczba_bankomatow, int &granica1, int &granica2){
- int i=-1, j=0, k=liczba_bankomatow;
- while(j<k){
- if(bankomaty[j].czesc_polski == 1){
- i++;
- swap(bankomaty[i],bankomaty[j]);
- j++;
- }
- if(bankomaty[j].czesc_polski == 3){
- k--;
- swap(bankomaty[k],bankomaty[j]);
- }
- else
- j++;
- }
- granica1 = i;
- granica2 = j;
- }
- int gdzie_najwiecej_bankomatow(bankomat* bankomaty,int &liczba_bankomatow, int &czesc_polski){
- int czesc_1= 0, czesc_2= 0, czesc_3= 0;
- for(int i=0; i<liczba_bankomatow; i++){
- if(bankomaty[i].czesc_polski == 1)
- czesc_1++;
- else if(bankomaty[i].czesc_polski == 2)
- czesc_2++;
- else
- czesc_3++;
- }
- if(czesc_1>czesc_2)
- if(czesc_1>czesc_3){
- czesc_polski = 1;
- return czesc_1;
- }
- else{
- czesc_polski = 3;
- return czesc_3;
- }
- else if(czesc_2>czesc_3){
- czesc_polski = 2;
- return czesc_2;
- }
- }
- void ile_dziala(bankomat* bankomaty, int &liczba_bankomatow, int &liczba_dzialajacych){
- for(int i=0; i<liczba_bankomatow; i++){
- if(bankomaty[i].czy_dziala == 1)
- liczba_dzialajacych++;
- }
- }
- void sumowanie(bankomat* bankomaty, suma* suma_pieniedzy, int &liczba_bankomatow){
- for(int i=0; i<liczba_bankomatow; i++){
- if(bankomaty[i].czy_dziala == 1)
- suma_pieniedzy[i].numer_bankomatu = bankomaty[i].numer_bankomatu;
- suma_pieniedzy[i].czesc_polski = bankomaty[i].czesc_polski;
- 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);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment