Entogula (+59)
Ar įmanoma dar ką nors supaprastinti?
#include <fstream>
#include <string>
using namespace std;
struct rezultatai {
string vardas{};
int suma{};
};
struct laimikis {
int kiek{};
string vardai[100]={};
int mase[100]={};
};
void nuskaitymas(rezultatai Zvejai[], rezultatai Zuvys[], laimikis Pagavo[], int& n, int& k);
void zvejuTaskai(rezultatai Zvejai[], rezultatai Zuvys[], laimikis Pagavo[], int n, int k);
void pagautaMase(rezultatai Zvejai[], rezultatai Zuvys[], laimikis Pagavo[], int n, int k);
void rikiavimas(rezultatai mas[], int x);
void isvedimas(rezultatai Zvejai[], rezultatai Zuvys[], laimikis Pagavo[], int n, int k);
int main(){
rezultatai Zvejai[30], Zuvys[30]; laimikis Pagavo[30];int n, k;
nuskaitymas(Zvejai, Zuvys, Pagavo, n, k);
zvejuTaskai(Zvejai, Zuvys, Pagavo, n, k);
pagautaMase(Zvejai, Zuvys, Pagavo, n, k);
rikiavimas(Zvejai, n);
rikiavimas(Zuvys, k);
isvedimas(Zvejai, Zuvys, Pagavo, n, k);
return 0;
}
void nuskaitymas(rezultatai Zvejai[], rezultatai Zuvys[], laimikis Pagavo[], int& n, int& k) {
ifstream fin("U2.txt");
fin >> n;
char laikinas[21];
for (int i = 0; i < n; i++) {
fin.ignore();
fin.get(laikinas, 21);
Zvejai[i].vardas = laikinas;
fin >> Pagavo[i].kiek;
for (int j = 0; j < Pagavo[i].kiek; j++) {
fin.ignore();
fin.get(laikinas, 21);
Pagavo[i].vardai[j] = laikinas;
fin >> Pagavo[i].mase[j];
if (Pagavo[i].mase[j] < 200) Zvejai[i].suma += 10;
else Zvejai[i].suma += 30;
}
}
fin >> k;
for (int i = 0; i < k; i++) {
fin.ignore();
fin.get(laikinas, 21);
Zuvys[i].vardas = laikinas;
fin >> Zuvys[i].suma;
}
fin.close();
}
void zvejuTaskai(rezultatai Zvejai[], rezultatai Zuvys[], laimikis Pagavo[], int n, int k) {
for (int i = 0; i < n; i++)for (int j = 0; j < Pagavo[i].kiek; j++)
for (int ii = 0; ii < k; ii++)if (Pagavo[i].vardai[j] == Zuvys[ii].vardas)Zvejai[i].suma += Zuvys[ii].suma;
}
void pagautaMase(rezultatai Zvejai[], rezultatai Zuvys[], laimikis Pagavo[], int n, int k) {
for (int i = 0; i < k; i++) {
Zuvys[i].suma = 0;
for (int j = 0; j < n; j++)
for (int ii = 0; ii < Pagavo[j].kiek; ii++)if (Zuvys[i].vardas == Pagavo[j].vardai[ii])Zuvys[i].suma += Pagavo[j].mase[ii];
}
}
void rikiavimas(rezultatai mas[], int x) {
for (int i = 0; i < x; i++)for (int j = 0; j < x - 1; j++)
if ((mas[j].suma < mas[j + 1].suma) || (mas[j].suma == mas[j + 1].suma && mas[j].vardas > mas[j + 1].vardas))swap(mas[j], mas[j + 1]);
}
void isvedimas(rezultatai Zvejai[], rezultatai Zuvys[], laimikis Pagavo[], int n, int k) {
ofstream fout("U2rez.txt");
fout << "Dalyviai" << "\n";
for (int i = 0; i < n; i++)fout << Zvejai[i].vardas << " " << Zvejai[i].suma << "\n";
fout << "Laimikis" <<"\n";
for (int i = 0; i < k; i++)fout << Zuvys[i].vardas << " " << Zuvys[i].suma << "\n";
fout.close();
}