• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego wczytuje jedną drużynę a drugą już źle ?

Object Storage Arubacloud
0 głosów
133 wizyt
pytanie zadane 28 listopada 2016 w C i C++ przez konrad99 Gaduła (4,090 p.)

Dlaczego wczytuje jedną drużynę a drugą już źle ?

void Gra::wczytaj_gre()//tu wczytuje składową gry (rozgrywki lotto_ekstraklasa)
{


lotto_ekstraklasa.wczytaj_rozgrywki();
}

void Rozgrywki::wczytaj_rozgrywki()//tak wczytują się rozgrywki
 {
     std::fstream plik;
plik.open( "FMK.txt", std::ios::in  );
if( plik.good() == true )
{
    std::cout << "Uzyskano dostep do pliku!" << std::endl;
    //tu operacje na pliku
} else std::cout << "Dostep do pliku zostal zabroniony!" << std::endl;
    for(int i=0;i<17;i++)
    {


     Klub klub_do_wczytania;
     klub_do_wczytania.wczytaj_klub(plik);//tu wczytuje zespoły 
     kluby_z_ligi.push_back(klub_do_wczytania);

    }





//std::cout<<(kluby_z_ligi[0].zawodnicykluby[31].narodowosc);

     plik.close();



 }
Klub* Klub::wczytaj_klub(std::fstream  & pliczek)
{
getline( pliczek, nazwa_klubu );

for(int i{0};i<31;i++)
{

//std::cout<<i;
Pilkarz przyklad;
przyklad.wczytaj_pilkarza(pliczek);//tu wczytuje pilkarzy
zawodnicykluby.push_back(przyklad);
//std::cout<<przyklad.imie;
//std::cout<<przyklad.imie;
std::string iw=przyklad.imie;

}




return this;
}

void Pilkarz::wczytaj_pilkarza(std::fstream & plik)//a tak wczytuje piłkarzy
{
plik>>imie;
plik>>nazwisko>>wiek;
plik>>narodowosc;
std::string poz;
plik>>poz;
wczytajpozycje(poz);
plik>>umiejetnosci;





}

//Chodzi o to że 1 Drużyna wczytuje się dobrze natomiast po jej całkowitym wczytaniu powinno zacząć
się wczytywać druga ona natomiast się źle wczytuje gdy gra dochodzi do kolejnego obiegu pętli w funkcji
wczytaj klub już następny klub źle wczytuje .

 

 

Struktura pliku tak wygląda

Legia Warszawa
Radosław Cierzniak      33 Polska     Bramkarz  66
Arkadiusz Malarz        36 Polska     Bramkarz  69
Radosław  Majecki       16 Polska     Bramkarz  57
Michał Pazdan           29 Polska     Obrońca   75
Jakub Rzeźniczak        30 Polska     Obrońca   68

....

komentarz 28 listopada 2016 przez plkpiotr Stary wyjadacz (12,420 p.)
edycja 28 listopada 2016 przez plkpiotr

Nie za bardzo mogę dojść ładu, co powoduje Twój błąd, być może jest to za duża ilość iteracji, pamiętaj, że je liczymy od zera... Jednak chciałbym jakoś Ci pomóc, bo widzę, że sporo czasu nad nim się głowisz. Wobec tego - do rzeczy!

Domyślam się, że wczytywanie drużyn i zawodników przeprowadzasz z jednego pliku, prawda? Osobiście proponowałbym nieco inne rozwiązanie...

W jednym pliku umieścić drużyny, np.

Legia Warszawa
Wisła Kraków

A w drugim pliku nazwę drużyny, (liczbę graczy w klubie opcjonalnie) i zawodników:

Legia Warszawa
2
Michał Pazdan   29   Polska   Obrońca 75
Jakub Rzeźniczak   30   Polska   Obrońca 68
Wisła Kraków
3
Patryk Małecki   24   Polska   Pozycja 72
Paweł Brożek   33   Polska   Pozycja    67
Krzysztof Mączyński   29   Polska   Pozycja   77

Wtedy mógłbyś dostać się do konkretnej drużyny poprzez odwołanie do wektora kluby[i], natomiast do piłkarza zespołu kluby[i].pilkarz[j] i wczytywać składy w jednej funkcji niezależnie od liczby graczy do każdego z wektorów push_back'iem.

Wczytywanie drużyn wyglądałoby:

while (getline(plik_z_druzynami, nazwa))
   kluby.push_back(nazwa);

Wczytywanie klubów do drużyn wyglądałoby:

for (it = kluby.begin(); it != kluby.end(); it++) {  // można bez iteratora
   getline(plik_z_pilkarzami, nazwa); // pobierasz nazwę klubu
   if (temp == (*it).getNameTeam()) { // sprawdzasz getterem czy się zgadza jeśli pole jest prywatne
      (...) // pobierasz następną linijkę czyli liczbę graczy "number"
      for (int i = 0; i < number; i++) {
         (...) // zczytyujesz kolejnych graczy i ich dane do wskazanej drużyny
         (*it).push_back(temp); // dodając do konkretnego zespołu
      }
   }
}

Taki analogiczny algorytm działa u mnie poprawnie, więc mógłby również uprościć Twój problem.

komentarz 29 listopada 2016 przez playerony Pasjonat (15,240 p.)
Nie mogę tego udowodnić, ale domyślam się że może w pliku występować przerwa miedzy nazwą ostatniego zawodnika a nazwą kolejnego zespołu, co powodować może złą kolejność wczytywania.

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 213 wizyt
0 głosów
1 odpowiedź 727 wizyt
pytanie zadane 11 stycznia 2017 w C# przez szpytma_1 Początkujący (340 p.)
0 głosów
0 odpowiedzi 462 wizyt

92,568 zapytań

141,422 odpowiedzi

319,635 komentarzy

61,956 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...