Advertisement
Guest User

Untitled

a guest
Nov 19th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.87 KB | None | 0 0
  1. /*
  2. This was an exercise for my homework.
  3. I must find a prince from a txt file, that is second biggest out of all.
  4. If I find none, then I must return 0. That there are no suitable princes for the princess.
  5. */
  6.  
  7. #include <iostream>
  8. #include <fstream>
  9. #include <vector>
  10. using namespace std;
  11.  
  12. struct Princas
  13. {
  14.     string vardas, pavarde; //Name, last name
  15.     int pedos, coliai; //Feet, inches
  16. };
  17.  
  18. void skaityk(ifstream& dfs, vector<Princas>& duom); //Read from file
  19. void rasyk(ofstream& rfs, vector<Princas>& duom); //Write to file
  20. int didziausio_princo_indeksas(vector<Princas>& duom); //Find biggest prince
  21. int tinkamo_princo_indeksas( vector<Princas>& duom); //Find suitable prince
  22.  
  23. int main(void)
  24. {
  25.     ifstream dfs ("princai-duom.txt");
  26.     ofstream rfs ("princai-rez.txt");
  27.  
  28.     vector<Princas> princu_duom; //All the princes
  29.  
  30.     skaityk(dfs, princu_duom);
  31.     rasyk(rfs, princu_duom);
  32.  
  33.     return 0;
  34. }
  35.  
  36. void skaityk(ifstream& dfs, vector<Princas>& duom) //Read from file
  37. {
  38.     struct Princas princas; //Prince
  39.     string vardas, pavarde; //Name and last name
  40.     int pedos, coliai; //Feet and inches
  41.  
  42.     int n_princu = 0; //Total amount of princes (constraint is 1-50)
  43.     while(dfs && n_princu < 50)
  44.     {
  45.         dfs >> vardas >> pavarde >> pedos >> coliai;
  46.         princas = { vardas, pavarde, pedos, coliai };
  47.  
  48.         duom.push_back(princas);
  49.  
  50.         ++n_princu;
  51.     }
  52. }
  53.  
  54. void rasyk(ofstream& rfs, vector<Princas>& duom) //Write to file
  55. {
  56.     int princo_indeksas = tinkamo_princo_indeksas(duom); //Suitable prince index
  57.  
  58.     if(!princo_indeksas) { rfs << princo_indeksas; } //Write 0 if there are no suitable princes
  59.     else
  60.     {
  61.         rfs << duom[princo_indeksas].vardas <<
  62.         " " << duom[princo_indeksas].pavarde <<
  63.         '\n';
  64.     }
  65. }
  66.  
  67. int didziausio_princo_indeksas(vector<Princas>& duom) //Biggest prince index
  68. {
  69.     int ped_max = 0, col_max = 0;
  70.     int indeksas = 0;
  71.     for(int i = 0; i < duom.size(); i++)
  72.     {
  73.         if(duom[i].pedos >= ped_max && duom[i].coliai > col_max)
  74.         {
  75.             ped_max = duom[i].pedos;
  76.             col_max = duom[i].coliai;
  77.             indeksas = i;
  78.         }
  79.     }
  80.  
  81.     return indeksas != 0 ? indeksas : 0;
  82. }
  83.  
  84. int tinkamo_princo_indeksas(vector<Princas>& duom) //Suitable prince index
  85. {
  86.     int tink_pedos = 0; //Right feet
  87.     int tink_coliai = 0; //Right inches
  88.     int tink_indeksas = 0; //Right prince index
  89.  
  90.     int did_princ_indek = 0; //Biggest prince index
  91.     did_princ_indek = didziausio_princo_indeksas(duom);
  92.  
  93.     for(int i = 0; i < duom.size(); i++)
  94.     {
  95.  
  96.         if(i != did_princ_indek &&
  97.             duom[i].pedos >= tink_pedos && duom[i].coliai >= tink_coliai)
  98.             {
  99.                 tink_pedos = duom[i].pedos;
  100.                 tink_coliai = duom[i].coliai;
  101.                 tink_indeksas = i;
  102.             }
  103.     }
  104.  
  105.     return tink_indeksas;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement