//Készítette: Berezvai Dániel //Dátum: 2012.03.28. //EHA kód: BEDTACI.ELTE //e-mail: 3ice@3ice.hu //Csoport: 11.csoport //Feladat: 1.beadandó/4.feladat // Melyik madárfaj fordult elo a legtöbb településen? /* Madarak életének kutatásával foglalkozó szakemberek n különbözo településen m különbözo madárfaj elofordulását tanulmányozzák. Egy adott idoszakban megszámolták, hogy az egyes településen egy madárfajnak hány egyedével találkoztak. Melyik az a madárfaj, amelyik a leggyakrabban (azaz a legtöbb településen) fordult elo? */ #include #include #include #include #include #include //beolvas.h bool termeszetes_szam(int n); bool pozitiv_egesz_szam(int n); bool nemures(std::string n); int szam_beolvas(const std::string &uzenet, const std::string &hibauzenet, bool check(int)); std::string nev_beolvas(const std::string &uzenet, const std::string &hibauzenet, bool check(std::string)); using namespace std; class lmaxind{ public: bool l; int max; int ind; }; void beolvas(string s, vector > &t, vector &Madarak, vector &Telepulesek); void beker(vector > &t, vector &Madarak, vector &Telepulesek); lmaxind feldolgoz(const vector > t); void kiir(const lmaxind l_max_ind, vector &Madarak); string itos(int i); //Segédfunkció int main(int argc, char *argv[]){ setlocale(LC_ALL,"Hun"); vector > t;//Adatok vector Madarak; vector Telepulesek; if(argc>1){ beolvas(argv[1],t, Madarak, Telepulesek); //Van fájl megadva parméterként }else{ beker(t, Madarak, Telepulesek); //Nincs paraméter, billentyuzetrol bekérjük az adatokat } lmaxind l_max_ind= feldolgoz(t); kiir(l_max_ind,Madarak); return 0; } void beolvas(string s, vector > &t, vector &Madarak, vector &Telepulesek){ ifstream f(s.c_str()); if(f.fail()){ cout<<"Nem találom a megadott fájlt! \""<>m; f>>n; f.ignore(100,'\n');//f kiürítése Madarak.resize(m); for(int i=0;i>t[i][j]; } } } void beker(vector > &t, vector &Madarak, vector &Telepulesek){ int m,n; m=szam_beolvas("Madarak száma: ","Természetes számot kérek!",termeszetes_szam); n=szam_beolvas("Települések száma: ","Természetes számot kérek!",termeszetes_szam); cin.ignore(100,'\n');//cin kiürítése Madarak.resize(m); for(int i=0;i t){ int c=0; for(unsigned int j=0;j0){ c++; } } return c; } lmaxind feldolgoz(const vector > t){ //Feltételes maximumkeresés: bool l=false; int max=-1; int ind=-1;//-1 értékadás nem feltétlen szükséges int elofordulasok; for(unsigned int i=0;imax){ max=elofordulasok; ind=i; } }else{ l=true; max=elofordulasok; ind=i; } } //Feltételes maximumkeresés vége. lmaxind l_max_ind; l_max_ind.l=l; l_max_ind.max=max; l_max_ind.ind=ind; return l_max_ind; } void kiir(const lmaxind l_max_ind, vector &Madarak){ if(l_max_ind.l){ cout<<"A "<0;} bool pozitiv_egesz_szam(int n){return n>=0;} bool nemures(string s){return s!="";} int szam_beolvas(const string &uzenet, const string &hibauzenet, bool ellenorzes(int)){ int n; bool loop=false; string devnull; do{ cout<>n; loop=cin.fail() || !ellenorzes(n); if(loop){ cout<