[c++] listy jednokierunkowe, wczytywanie z pliku - problem

norbm
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 22 gru 2012, o 12:29
Płeć: Mężczyzna
Lokalizacja: Białystok

[c++] listy jednokierunkowe, wczytywanie z pliku - problem

Post autor: norbm »

cześć, potrzebuje pomocy, może Wam udałoby się znaleźć błąd? przerobiłem funkcję na program w main żeby było łatwiej sprawdzać. program powinien wczytać z pliku tekstowego dane w formacie:
"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;
}



Awatar użytkownika
MichalPWr
Użytkownik
Użytkownik
Posty: 1625
Rejestracja: 29 wrz 2010, o 15:55
Płeć: Mężczyzna
Lokalizacja: Leszno
Podziękował: 7 razy
Pomógł: 387 razy

[c++] listy jednokierunkowe, wczytywanie z pliku - problem

Post autor: MichalPWr »

norbm, Jaki to błąd? Pokaż, jakie informacje zwraca kompilator.
ODPOWIEDZ