Witam, piszę prosty program składający się z trzech void'ów: menu, gra, oraz tablica wyników, menu jest zwykłym przełącznikiem, tablica wyników wyświetla trzy najlepsze wyniki, natomiast gra obsługuje grę(póki co jest to tylko pytanie ile zebrało się punktów), i jeżeli wynik jest większy niż któryś z trzech wcześniej zapisanych w pliku nadpisuje go do niego w odpowiedniej kolejności, jeśli jest większy niż wszystkie zapisuje go w 1 linii i zmienia dwie pozostałe, jeśli jest większy od drugiej i trzeciej wartości, zmienia je odpowiednio, zaś jeżeli tylko od trzeciej zmienia samą trzecią. Dopóki w procedurze gra nie miałem również odczytywania wartości z pliku działało zapisywanie do niego, jednak musiałem tam i otworzyć odczytywanie wartości pliku i możliwość zapisu, ponieważ program zapisuje według określonej reguły. Bardzo proszę o pomoc w rozwiązaniu tego problemu, bez tego nie mogę pójść dalej.
#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
int opcja;
void gra();
void menu();
void wyniki();
int main()
{
menu();
return 0;
}
void menu()
{
system("cls");
cout << "---------------------" << endl;
cout << "1 Gra" << endl;
cout << "2 Tablica wynikow" << endl;
cout << "3 Wyjscie" << endl;
cin >> opcja;
cout<<endl;
switch(opcja)
{
case 1:
gra();
break;
case 2:
wyniki();
break;
case 3:
exit(0);
break;
}
}
void gra()
{
system("cls");
//----------------------------------------------------------
int pkt;
string j, d, t;
cout<<"Ile masz pkt? ";
cin>>pkt;
fstream plik;
//---------wejscie
plik.open("punkty.txt",ios::in);
if(plik.good()==false)
{
cout<<"Plik nie istnieje";
}
string linia;
int nrl=1;
while(getline(plik,linia))
{
switch(nrl)
{
case 1: j = linia; break;
case 2: d = linia; break;
case 3: t = linia; break;
}
nrl++;
}
plik.close();
//-----------zapisywanie
plik.open("punkty.txt",ios::out|ios::app);
if(pkt<t)
{
cout<<"zdobyles za malo pkt";
}
else if((pkt>j)&&(pkt>d)&&(pkt>t))
{
t=d;
d=j;
j=pkt;
}
else if((pkt>d)&&(pkt>t))
{
t=d;
d=pkt;
}
else if(pkt>t)
{
t=pkt;
}
plik.close();
//-----------------------------------------------------------
cout<<endl<<endl;
cout<<"---------------------"<<endl;
cout<<"1 Menu glowne"<<endl;
cin >>opcja;
if(opcja==1)
{
menu();
}
}
void wyniki()
{
system("cls");
//----------------------------------------------------------
string j, d, t;
fstream plik;
plik.open("punkty.txt",ios::in);
if(plik.good()==false)
{
cout<<"Plik nie istnieje";
}
string linia;
int nrl=1;
while(getline(plik,linia))
{
switch(nrl)
{
case 1: j = linia; break;
case 2: d = linia; break;
case 3: t = linia; break;
}
nrl++;
}
plik.close();
cout<<j<<endl;
cout<<d<<endl;
cout<<t<<endl;
string x="41";
if(x>t)
{
cout<<"dupal";
}
else
{
cout<<"nie dupal";
}
//-----------------------------------------------------------
cout<<endl<<endl;
cout<<"---------------------"<<endl;
cout<<"1 Menu glowne"<<endl;
cin >>opcja;
if(opcja==1)
{
menu();
}