Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- This was an exercise for my homework.
- I must find a prince from a txt file, that is second biggest out of all.
- If I find none, then I must return 0. That there are no suitable princes for the princess.
- */
- #include <iostream>
- #include <fstream>
- #include <vector>
- using namespace std;
- struct Princas
- {
- string vardas, pavarde; //Name, last name
- int pedos, coliai; //Feet, inches
- };
- void skaityk(ifstream& dfs, vector<Princas>& duom); //Read from file
- void rasyk(ofstream& rfs, vector<Princas>& duom); //Write to file
- int didziausio_princo_indeksas(vector<Princas>& duom); //Find biggest prince
- int tinkamo_princo_indeksas( vector<Princas>& duom); //Find suitable prince
- int main(void)
- {
- ifstream dfs ("princai-duom.txt");
- ofstream rfs ("princai-rez.txt");
- vector<Princas> princu_duom; //All the princes
- skaityk(dfs, princu_duom);
- rasyk(rfs, princu_duom);
- return 0;
- }
- void skaityk(ifstream& dfs, vector<Princas>& duom) //Read from file
- {
- struct Princas princas; //Prince
- string vardas, pavarde; //Name and last name
- int pedos, coliai; //Feet and inches
- int n_princu = 0; //Total amount of princes (constraint is 1-50)
- while(dfs && n_princu < 50)
- {
- dfs >> vardas >> pavarde >> pedos >> coliai;
- princas = { vardas, pavarde, pedos, coliai };
- duom.push_back(princas);
- ++n_princu;
- }
- }
- void rasyk(ofstream& rfs, vector<Princas>& duom) //Write to file
- {
- int princo_indeksas = tinkamo_princo_indeksas(duom); //Suitable prince index
- if(!princo_indeksas) { rfs << princo_indeksas; } //Write 0 if there are no suitable princes
- else
- {
- rfs << duom[princo_indeksas].vardas <<
- " " << duom[princo_indeksas].pavarde <<
- '\n';
- }
- }
- int didziausio_princo_indeksas(vector<Princas>& duom) //Biggest prince index
- {
- int ped_max = 0, col_max = 0;
- int indeksas = 0;
- for(int i = 0; i < duom.size(); i++)
- {
- if(duom[i].pedos >= ped_max && duom[i].coliai > col_max)
- {
- ped_max = duom[i].pedos;
- col_max = duom[i].coliai;
- indeksas = i;
- }
- }
- return indeksas != 0 ? indeksas : 0;
- }
- int tinkamo_princo_indeksas(vector<Princas>& duom) //Suitable prince index
- {
- int tink_pedos = 0; //Right feet
- int tink_coliai = 0; //Right inches
- int tink_indeksas = 0; //Right prince index
- int did_princ_indek = 0; //Biggest prince index
- did_princ_indek = didziausio_princo_indeksas(duom);
- for(int i = 0; i < duom.size(); i++)
- {
- if(i != did_princ_indek &&
- duom[i].pedos >= tink_pedos && duom[i].coliai >= tink_coliai)
- {
- tink_pedos = duom[i].pedos;
- tink_coliai = duom[i].coliai;
- tink_indeksas = i;
- }
- }
- return tink_indeksas;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement