"nazwa
liczba wygranych
liczba remisow
liczba przegranych"
stworzyć z tego kolejne elementy listy jednokierunkowej, następnie sprawdzić czy zadeklarowane na początku programu nazwy już istnieją - jeśli nie dodać kolejne elementy listy. na koniec zapisać.
bardzo bardzo prosze o pomoc
Kod: Zaznacz cały
#include <iostream>
#include <fstream>
#include <sstream>
using namespace std;
struct gracz{
string nazwa;
char znak;
int wyg, por, rem;
double sr=((wyg-por)/(wyg+por+rem));
gracz *next;
};
int main()
{
string wygrany="Tomek";
string przegrany="Kasia";
bool remis=false;
string nazwa;
int pom;
bool istniejew=false, istniejep=false;
int wyg, rem, por;
ifstream statystyki;
statystyki.open("stats.txt");
string linia;
gracz *glowa, *aktualny, *poprzedni;
aktualny=NULL;
poprzedni=NULL;
glowa=poprzedni;
while(!statystyki.eof()){
getline(statystyki, linia);
nazwa=linia;
getline(statystyki, linia);
istringstream iss(linia);
iss>>wyg;
getline(statystyki, linia);
istringstream iss2(linia);
iss2>>rem;
getline(statystyki, linia);
istringstream iss3(linia);
iss3>>por;
poprzedni = aktualny;
aktualny = new gracz;
aktualny->nazwa=nazwa;
aktualny->wyg=wyg;
aktualny->rem=rem;
aktualny->por=por;
aktualny->next=NULL; //teraz staje sie ostatim
if(poprzedni!=NULL) // jesli to nie jest pierwszy element
poprzedni->next=aktualny; //poprzedni staje sie przedostatnim
else
glowa=aktualny;
}
statystyki.close();
// TU ALGORYTM SZUKANIA UZYTKOWNIKA
if(remis==false){
aktualny=glowa;
poprzedni=NULL;
while (aktualny->next!=NULL)
{
if(aktualny->nazwa==wygrany){
pom=0;
aktualny->wyg=pom;
pom++;
aktualny->wyg=pom;
bool istniejew =true;
}
if(aktualny->nazwa==przegrany){
pom=0;
aktualny->por=pom;
pom++;
aktualny->por=pom;
bool istniejep =true;
}
aktualny = aktualny->next;
}
// jesli nie istnieje, dodaje go na koncu
if(istniejew==false){
poprzedni = aktualny;
aktualny = new gracz;
aktualny->nazwa=wygrany;
aktualny->wyg=1;
aktualny->rem=0;
aktualny->por=0;
aktualny->next=NULL;
}
if(istniejep==false){
poprzedni = aktualny;
aktualny = new gracz;
aktualny->nazwa=przegrany;
aktualny->wyg=0;
aktualny->rem=0;
aktualny->por=1;
aktualny->next=NULL;
}
}
if(remis==true){
aktualny=glowa;
poprzedni=NULL;
while (aktualny->next!=NULL)
{
if(aktualny->nazwa==wygrany){
pom=0;
aktualny->rem=pom;
pom++;
aktualny->rem=pom;
bool istniejew =true;
}
if(aktualny->nazwa==przegrany){
pom=0;
aktualny->rem=pom;
pom++;
aktualny->rem=pom;
bool istniejep =true;
}
aktualny = aktualny->next;
}
// jesli nie istnieje, dodaje go na koncu
if(istniejew==false){
poprzedni = aktualny;
aktualny = new gracz;
aktualny->nazwa=wygrany;
aktualny->wyg=0;
aktualny->rem=1;
aktualny->por=0;
aktualny->next=NULL;
}
if(istniejep==false){
poprzedni = aktualny;
aktualny = new gracz;
aktualny->nazwa=przegrany;
aktualny->wyg=0;
aktualny->rem=1;
aktualny->por=0;
aktualny->next=NULL;
}
//nadpisuje plik statystyk
ofstream statystyki2;
statystyki2.open("stats.txt");
aktualny=glowa;
poprzedni=NULL;
while (aktualny->next!=NULL)
{
statystyki2<<aktualny->nazwa<<endl<<aktualny->wyg<<endl<<aktualny->rem<<endl<<aktualny->por<<endl;
cout<<aktualny->nazwa<<endl<<aktualny->wyg<<endl<<aktualny->rem<<endl<<aktualny->por<<endl;
}
statystyki2.close();
}
return 0;
}