Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <fstream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- class datum{
- private:
- int _d;
- int _m;
- int _g;
- public:
- datum(int d=1,int m=1,int g=1900){
- _d = d;
- _m = m;
- _g = g;
- }
- datum(const datum& d){
- _d = d._d;
- _m = d._m;
- _g = d._g;
- }
- datum& operator=(datum d){
- if (this != &d){
- _d = d._d;
- _m = d._m;
- _g = d._g;
- }
- return *this;
- }
- friend ostream& operator<<(ostream& out, datum& d){
- out << d._d << "." << d._m << "." << d._g;
- return out;
- }
- bool dodajdan(int d){
- _d = d;
- return true;
- }
- bool dodajmjesec(int m){
- _m = m;
- return true;
- }
- bool dodajgodinu(int g){
- _g = g;
- return true;
- }
- };
- class kandidat {
- private:
- string ime;
- string mat;
- datum d;
- public:
- kandidat(string i = "<nepoznato_ime>", string m = "<maticni_nepoznat>", datum d = datum(1, 1, 1900)){
- ime = i;
- mat = m;
- this->d = d;
- }
- kandidat(const kandidat& obj){
- ime = obj.ime;
- mat = obj.mat;
- d = obj.d;
- }
- string getime(){
- return ime;
- }
- string getmat(){
- return mat;
- }
- datum getdat(){
- return d;
- }
- kandidat& operator=(kandidat& obj){
- ime = obj.ime;
- mat = obj.mat;
- d = obj.d;
- }
- friend ostream& operator<<(ostream& out, kandidat& d){
- out << "Kandidat: \t\t" << d.ime << endl << "JMBG: \t\t\t" << d.mat << endl << "Datum rodjenja:\t\t" << d.d<<endl;
- return out;
- }
- };
- class izbori{
- private:
- string mat;
- int bodovi;
- public:
- izbori(string m="<nepoznato>",int b=0){
- mat = m;
- bodovi = b;
- }
- izbori(const izbori& obj){
- mat = obj.mat;
- bodovi = obj.bodovi;
- }
- string getmat(){
- return mat;
- }
- int getbod(){
- return bodovi;
- }
- izbori& operator=(izbori& obj){
- mat = obj.mat;
- bodovi = obj.bodovi;
- return *this;
- }
- bool operator<(izbori& obj){
- if (this->bodovi < obj.bodovi)
- return true;
- return false;
- }
- friend ostream& operator<<(ostream& out, izbori& d){
- out << "Broj osvojenih bodova:\t" << d.bodovi << endl;
- return out;
- }
- };
- bool strtodat(string dat, datum &d){
- int br = 0;
- string dio = "";
- for (string::iterator it = dat.begin(); it != dat.end(); it++){
- if (br < 2){
- dio += *it;
- }
- if (br == 2){
- d.dodajdan(atoi(dio.c_str()));
- dio.erase();
- dio = "";
- }
- if (br > 2 && br < 5){
- dio += *it;
- }
- if (br == 5){
- d.dodajmjesec(atoi(dio.c_str()));
- dio.erase();
- dio = "";
- }
- if (br>5 && br < 10){
- dio += *it;
- }
- if (br == 9){
- d.dodajgodinu(atoi(dio.c_str()));
- dio.erase();
- dio = "";
- }
- br++;
- }
- br = 0;
- return true;
- }
- bool dodajkandidate(vector<kandidat> &kand){
- char* i = "kandidati.txt";
- string mat = "";
- string ime = "";
- string dat;
- datum d;
- int b = 0;
- bool nn = false;
- ifstream ispis(i);
- int x = 0;
- bool p = false;
- if (ispis.fail()){
- cout << "Greska: Provjerite destinaciju i ime fajla. (Fajl se mora nalaziti u istom folderu gdje se nalazi i program)" << endl;
- return false;
- }
- else{
- char znak;
- while (ispis.get(znak)){
- if (znak == '\n')
- nn = true;
- if (znak == ' ')
- b++;
- if (nn){
- strtodat(dat, d);
- kandidat kan(ime, mat, d);
- kand.push_back(kan);
- ime.erase();
- ime = "";
- mat.erase();
- mat = "";
- dat.erase();
- dat = "";
- nn = false;
- b = 0;
- }
- if (b == 0){
- if (znak != '\n')
- mat += znak;
- }
- if (b == 1){
- if (znak!=' ')
- ime += znak;
- }
- if (b == 2){
- ime += znak;
- }
- if (b == 3){
- if (znak != ' ')
- dat += znak;
- }
- }
- }
- return true;
- }
- bool dodajizbore(vector<izbori> &izb){
- char* i = "izbori.txt";
- string mat = "";
- string bodova = "";
- int bod = 0;
- ifstream ispis(i);
- if (ispis.fail()){
- cout << "Greska: Provjerite destinaciju i ime fajla. (Fajl se mora nalaziti u istom folderu gdje se nalazi i program)" << endl;
- return false;
- }
- else{
- char znak;
- while (ispis.get(znak)){
- if (znak == ' '){
- while (ispis.get(znak)){
- if (znak != ' ')
- bodova += znak;
- if (znak == '\n'){
- bod = atoi(bodova.c_str());
- izbori iz(mat, bod);
- izb.push_back(iz);
- mat.erase();
- bodova.erase();
- break;
- }
- }
- }
- if (znak != '\n')
- mat += znak;
- }
- }
- return true;
- }
- class povezano{
- public:
- vector<kandidat>_kand;
- vector<izbori>_izb;
- bool dodati(vector<kandidat>&__kand, vector<izbori>__izb){
- for (vector<kandidat>::iterator it = __kand.begin(); it != __kand.end(); it++){
- kandidat kan(it->getime(), it->getmat(), it->getdat());
- _kand.push_back(kan);
- for (vector<izbori>::iterator it2 = __izb.begin(); it2 != __izb.end(); it2++){
- if (it->getmat().compare(it2->getmat()) == 0){
- izbori izb(it2->getmat(), it2->getbod());
- _izb.push_back(izb);
- }
- }
- }
- return true;
- }
- bool poredi(izbori obj, izbori obj1){
- return(obj < obj1);
- }
- bool sortirati(){
- sort(_izb.begin(), _izb.end());
- return true;
- }
- friend ostream& operator<<(ostream& out, povezano& obj){
- for (vector<kandidat>::iterator it = obj._kand.begin(); it != obj._kand.end(); it++){
- for (vector<izbori>::iterator it2 = obj._izb.begin(); it2 != obj._izb.end(); it2++){
- if (it->getmat().compare(it2->getmat()) == 0)
- out << "============================================"<<endl<<*it << *it2<<"============================================"<<endl<<endl;
- }
- }
- return out;
- }
- };
- int main(){
- vector<kandidat> kand;
- vector<izbori> izb;
- povezano pov;
- float bodovi = 0;
- int trbodovi = 0;
- float lokacija = 0;
- int trlokacija = 0;
- char* kandidati = "kandidati.txt";
- dodajkandidate(kand);
- dodajizbore(izb);
- pov.dodati(kand, izb);
- pov.sortirati();
- cout << pov;
- for (vector<izbori>::iterator it = pov._izb.begin(); it != pov._izb.end(); it++){
- bodovi+=it->getbod();
- if (it->getbod() > trbodovi){
- trbodovi = it->getbod();
- trlokacija = lokacija;
- }
- lokacija++;
- }
- vector<izbori>::iterator it = pov._izb.begin() + trlokacija;
- vector<kandidat>::iterator it2 = pov._kand.begin();
- cout << "Pobjednik: "<<endl<<*it2<<*it<<"Broj osvojenih glasova:\t"<<it->getbod()/bodovi*100<<"%"<<endl<<"Ukupan broj glasova:\t"<<bodovi<<endl;
- system("pause>0");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement