Advertisement
levimoosky

prog150310_1

Apr 10th, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.88 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <sstream>
  4. #include <vector>
  5. #include <cstdlib>
  6.  
  7. using namespace std;
  8.  
  9. const string FAJLNEV = "spanyolok.txt";
  10. struct Spanyol;
  11.  
  12. bool beolvas(vector<Spanyol> &losLocos);
  13. void kiir(const vector<Spanyol> &v);
  14. int leghosszabbKor(const vector<Spanyol> &v);
  15. int nevHossz(Spanyol s);
  16.  
  17. struct Spanyol
  18. {
  19.     string nev;
  20.     int kor;
  21. };
  22.  
  23. int main()
  24. {
  25.     vector<Spanyol> v;
  26.     if(beolvas(v))
  27.     {
  28.         kiir(v);
  29.         if(v.size() > 0)
  30.             cout << "A leghosszabb nevu spanyol eletkora: " << leghosszabbKor(v) << " esztendo." << endl;
  31.         else cout << "Nincs spanyol." << endl;
  32.     }
  33.  
  34.     else
  35.         cout << "Hibas fajl" << endl;
  36.     return 0;
  37. }
  38.  
  39. bool beolvas(vector<Spanyol> &losLocos)
  40. {
  41.     ifstream ifs(FAJLNEV.c_str());
  42.     if(ifs.fail())
  43.         return false;
  44.  
  45.     string sor;
  46.     while(getline(ifs, sor))
  47.     {
  48.         Spanyol elLoco;
  49.  
  50.         stringstream ss(sor);
  51.         string s1, s2;
  52.         ss >> s1 >> s2;
  53.         if(ss.fail())
  54.             return false;
  55.  
  56.         while(!ss.fail())
  57.         {
  58.             elLoco.nev += s1;
  59.             s1 = s2;
  60.             ss >> s2;
  61.         }
  62.  
  63.         int kor = atoi(s1.c_str());
  64.         if(kor == 0 && s1 != "0" || kor < 0)
  65.             return false;
  66.         elLoco.kor = kor;
  67.         losLocos.push_back(elLoco);
  68.     }
  69.     return true;
  70. }
  71.  
  72. void kiir(const vector<Spanyol> &v)
  73. {
  74.     for(size_t i=0; i<v.size(); i++)
  75.         cout << v[i].nev << " (" << v[i].kor << ")" << endl;
  76. }
  77.  
  78. int leghosszabbKor(const vector<Spanyol> &v) //ef: v.size > 0
  79. {
  80.     size_t ind = 0;
  81.     int max = nevHossz(v[0]);
  82.     for(size_t i=1; i <v.size(); i++)
  83.     {
  84.         if(max < nevHossz(v[i]))
  85.         {
  86.             max = nevHossz(v[i]);
  87.             ind = i;
  88.         }
  89.     }
  90.     return v[ind].kor;
  91. }
  92. int
  93.  
  94. int nevHossz(Spanyol s)
  95. {
  96.     return s.nev.size();
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement