jak zrobić odczyt z pliku wraz z sortowaniem ?

0

Mam dwa pytania:
1.Dlaczego podczas kompilowania wywala mi błąd z case 2 ?
2.Jak zrobić w funkcji lista odczytywanie 3 najlepszych wyników z gry(wyniki muszą być posortowane a następnie wyświetlone 3 najlepsze z nich)

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

int lista()
{


    return 0;
}

int main()
{
int a,q;
int s=0;
srand( time( NULL ) );
 int x=( rand() % 102 ) +1;
 cout<<x;
 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();
    break;
   }
return 0;
}

0

Pary nawiasów klamrowych w blokach case są zbędne, natomiast bloki case powinny być ujęte w pary nawiasów po instrukcji switch().
Co drugiego pytania, to trzymaj te wyniki w jakimś kontenerze: std::vector, std::array, to będziesz mógł je posortować za pomocą std::sort.

Ponadto poukładaj ten kod. Skoro już stosujesz funkcje, to zadbaj chociaż o minimalną enkapsulację danych i dekompozycję. Masz tu wszystko wymieszane w tym kodzie.

0

Nie wiem czy to będzie "full profesionall" ale możesz pobrać linie z pliku pętlą z warunkiem getline...

Później zamienisz string na int zapiszesz do tabeli i posortujesz zwykłą funkcją sortującą...

fstream plik;

    plik.open ("hasla.txt", ios::out | ios::in);

    if (!(plik.good()))
    {
        cout << "Nie znaleziono pliku!" << endl;
        exit(1);
    }

    string bufor;
        //int iterator = 0;
    while (getline(plik,bufor))
    {
        //cout << ++iterator << ". " << bufor << endl;

        Answer_A(bufor);
        Answer_B(bufor);
        Answer_C(bufor);
    }

    cout << "A) W pliku jest " << parzyste << " hasel o parzystej dlugosci, a "
         << nieparzyste << " o nieparzystej. \n";
    cout << "B) W pliku sa nastepujace anagramy:" << endl << endl;
    cout << odpB << endl << endl;
    cout << "C) Lista hasel zawierających w sobie dwa kolejne znaki, których suma kodów ASCII wynosi 220 : ";
    cout << endl << endl << odpC << endl;


    plik.close();

Kawałek mojej matury jeśli w czymś pomoże ;)

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