ar123 +1
Užduoties sąlyga yra 8-9 psl. šiuo adresu: https://www.nec.lt/failai/8018_IT-VBE-1_2019.pdf
Norėčiau, kad kas nors parodytų, kaip reikia išspręsti šią užduotį, kad būtų spausdinamas atsakymas.
Mano neteisingas sprendimas:
#include <iostream>
#include <fstream>
using namespace std;
struct Sportininkai{
string vardas;
int nr;
int val;
int min;
int sek;
int suviai;
};
void Skaityti(int &n, int &m, Sportininkai A[], Sportininkai B[]);
void UztrukesLaikas(int n, int m, int kiekv, int kiekm, Sportininkai A[], Sportininkai B[], Sportininkai C[], Sportininkai D[]);
void Rikiavimas(int m, Sportininkai C[], Sportininkai D[]);
void Spausdinti(int kiekv, int kiekm, Sportininkai C[], Sportininkai D[]);
int main()
{
int n, m;
int kiekv, kiekm;
Sportininkai A[30], B[30], C[30], D[30];
Skaityti(n, m, A, B);
UztrukesLaikas(n, m, kiekv, kiekm, A, B, C, D);
Rikiavimas(m, C, D);
Spausdinti(kiekv, kiekm, C, D);
return 0;
}
void Skaityti(int &n, int &m, Sportininkai A[], Sportininkai B[])
{
ifstream fd("U2.txt");
char eil[21];
int s;
fd >> n;
for(int i=0; i<n; i++)
{
fd.ignore(80, '\n');
fd.get(eil, sizeof eil);
A[i].vardas=eil;
fd >> A[i].nr;
fd >> A[i].val;
fd >> A[i].min;
fd >> A[i].sek;
}
fd >> m;
int kiekm=0;
int kiekv=0;
for(int i=0; i<m; i++)
{
fd.ignore(80, '\n');
fd >> B[i].nr;
fd >> B[i].val;
fd >> B[i].min;
fd >> B[i].sek;
if(B[i].nr/100==2)
{
kiekv++;
B[i].suviai=0;
for(int i=1; i<=4; i++)
{
fd >> s;
B[i].suviai=B[i].suviai+s;
}
}
if(B[i].nr/100==1)
{
kiekm++;
B[i].suviai=0;
for(int i=1; i<=2; i++)
{
fd >> s;
B[i].suviai=B[i].suviai+s;
}
}
}
fd.close();
}
void UztrukesLaikas(int n, int m, int kiekv, int kiekm, Sportininkai A[], Sportininkai B[], Sportininkai C[], Sportininkai D[])
{
for(int i=0; i<m; i++)
{
for(int j=0; j<n; j++)
{
if(B[i].nr==A[j].nr)
{
for(int i=0; i<=kiekm; i++)
{
C[i].nr=B[i].nr;
C[i].vardas=B[i].vardas;
C[i].val=((B[i].val*60*60+B[i].min*60+B[i].sek+(10-B[i].suviai)*60)-(A[j].val*60*60+A[j].val*60+A[j].sek))/60/60;
C[i].min=((B[i].val*60*60+B[i].min*60+B[i].sek+(10-B[i].suviai)*60)-(A[j].val*60*60+A[j].val*60+A[j].sek))/60;
C[i].sek=((B[i].val*60*60+B[i].min*60+B[i].sek+(10-B[i].suviai)*60)-(A[j].val*60*60+A[j].val*60+A[j].sek))%60;
}
for(int i=0; i<=kiekv; i++)
{
D[i].nr=B[i].nr;
D[i].vardas=B[i].vardas;
D[i].val=((B[i].val*60*60+B[i].min*60+B[i].sek+(20-(B[i].suviai)*60)-(A[j].val*60*60+A[j].val*60+A[j].sek))/60)/60;
D[i].min=((B[i].val*60*60+B[i].min*60+B[i].sek+(20-B[i].suviai)*60)-(A[j].val*60*60+A[j].val*60+A[j].sek))/60;
D[i].sek=((B[i].val*60*60+B[i].min*60+B[i].sek+(20-B[i].suviai)*60)-(A[j].val*60*60+A[j].val*60+A[j].sek))%60;
}
}
}
}
}
void Rikiavimas(int m, Sportininkai C[], Sportininkai D[])
{
for(int i=0; i<m-1; i++)
{
for(int j=i+1; j<m; j++)
{
if(C[i].val*60*60+C[i].min*60+C[i].sek>C[j].val*60*60+C[j].min*60+C[j].sek)
swap(C[i], C[j]);
else if(C[i].val*60*60+C[i].min*60+C[i].sek==C[j].val*60*60+C[j].min*60+C[j].sek)
{
if(C[i].vardas>C[j].vardas)
swap(C[i], C[j]);
}
if(D[i].val*60*60+D[i].min*60+D[i].sek>D[j].val*60*60+D[j].min*60+D[j].sek)
swap(D[i], D[j]);
else if(D[i].val*60*60+D[i].min*60+D[i].sek==D[j].val*60*60+D[j].min*60+D[j].sek)
{
if(D[i].vardas>D[j].vardas)
swap(D[i], D[j]);
}
}
}
}
void Spausdinti(int kiekv, int kiekm, Sportininkai C[], Sportininkai D[])
{
ofstream fr("U2rez.txt");
fr << "Merginos " << endl;
for(int i=0; i<=kiekm; i++)
fr << C[i].nr << " " << C[i].vardas << " " << C[i].val << " " << C[i].min << " " << C[i].sek << endl;
fr << "Vaikinai " << endl;
for(int i=0; i<=kiekv; i++)
fr << D[i].nr << " " << D[i].vardas << " " << D[i].val << " " << D[i].min << " " << D[i].sek << endl;
fr.close();
}