Napisałem taki oto program w którym użytkownik musi zgadnąć liczbę wylosowaną przez komputer. W funkcji totolotek mam zapisywanie najlepszych wyników wraz z imionami. Jak posortować te wyniki tak aby pokazywało tylko 3 najlepsze wyniki wraz z imionami (wyniki to procentowa skuteczność strzałów)?
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream>
using namespace std;
char totolotek(int a, int s, int x, string nazwa)
{
for (int i = 0; i < 6; i++) {
cin >> a;
if (a > x) {
cout << "podana liczba jest za wysoka" << endl;
s++;
}
if (a < x) {
cout << "podana liczba jest za niska" << endl;
s++;
}
if (x == a) {
s++;
cout << "Brawo " << nazwa << ". Udalo sie zgadnac liczbe.Skutecznosc procentowa strzalow " << 100 / s << "%";
break;
}
}
fstream file;
file.open("listawynik.txt", ios::app);
if (s != 6) {
if (file.good()) {
cout << "zostajesz zapisany do listy najlepszych wynikow";
file << nazwa << "\t" << 100 / s << endl;
}
}
return 0;
}
char lista(string slowo1, string slowo2)
{
fstream file;
file.open("listawynik.txt", ios::in | ios::out);
if (file.good() == true) {
for (int h = 0; h < 3; h++) {
file >> slowo1 >> slowo2;
cout << slowo1 << " " << slowo2 << endl;
}
file.close();
}
return 0;
}
int main()
{
string linia, slowo1, slowo2;
int a, q;
int s = 0;
srand(time(NULL));
int x = (rand() % 102) + 1;
string nazwa;
cout << "1.Gra\n 2.Lista wynikow" << endl;
cin >> q;
switch (q) {
case 1:
cout << "podaj nazwe uzytkownika ";
cin >> nazwa;
cout << "wpisz liczbe jaka zostala wylosowana" << endl;
totolotek(a, s, x, nazwa);
break;
case 2:
lista(slowo1, slowo2);
break;
}
return 0;
}