sortowanie listy wyników

0

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;
}

1
  1. Rozdziel logikę: jedna czynność - jedna funkcja.
  2. Stosuj angielskie nazwy.
  3. Stosuj opisowe nazwy (co to jest a, s, x, q, nazwa, slowo1, slowo2?).

Poczytaj o strkturach struct (class). Ułatwisz zdanie. Napiszesz dla niej operator< i użyjesz go do sortowania listy.
https://dsp.krzaq.cc/post/245/jak-latwo-zaimplementowac-w-cxx-operator-porownania-dla-twojej-klasy/

1 użytkowników online, w tym zalogowanych: 0, gości: 1