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

Kurs C++, odc. 7 - Quiz

VPS Starter Arubacloud
+2 głosów
786 wizyt
pytanie zadane 9 lipca 2015 w C i C++ przez Matteo Nowicjusz (190 p.)

W tym odcinku pojawiły się pierwsze schody :) Widziałem w komentarzach na YT, że kilka osób też miało z tym problem, więc opisze jak doszedłem do oświecenia. 
Po pierwsze powtórzenie sobie tego pozwoli mi na jeszcze lepsze zrozumienie, a po drugie, może się komuś przyda :) 
Zastanawiałem się, jak to możliwe, że po powróceniu z linii 8 do linii 3 z pliku pobierane są kolejne linie (9,10,11 itd.).
Otóż: Za pobieranie kolejnych linii odpowiada funkcja 'getline()', która ma dwa argumenty (oddzielone przecinkiem). Pierwszy mów skąd program bierze te linie, a drugi gdzie ma je zapisać (w jakiej zmiennej - my nazwaliśmy ją "linia"). 
I ta funkcja ubrana w 'While' będzie zwracać linie, aż do wyczerpania wszystkich linii w pliku txt. 
Zmienną nr_linii utworzyliśmy sobie roboczo na potrzeby 'switcha'. 
Pobieranie linii od 3-8 jest logiczne, ale później następują czary :) 
Otóż, zmienna nr_linii nie wpływa na funkcję getline(). Ona cały czas pobiera kolejne linie pliku txt. po pobraniu 8 linii z pliku txt My mówimy programowi: zmień zmienną nr_linii na 3. 
I teraz: funkcja getline() pobierze kolejny wiersz z txt (nr9), ale 'switch' "będzie myślał", że to linia 3. i tam zapisze linię 9. później 10-tą linię jako 4 itd. 
Zmieniając nr_linii z 8 na 3, dokonaliśmy także inkrementacji zmiennej nr_pytania, która odpowiada za to, na którym miejscu w tablicy zapisać kolejne linie. 

Żeby to ogarnąć musiałem wrócić do początku odcinka, bo trochę chyba przespałem ważną informację o działaniu funkcji getline, oraz dokładnie to wszystko przemyśleć :)

 

I na koniec jeszcze kod tego o co się rozchodzi: 



int main()
{
    int nr_linii=1;
    string linia;
    int nr_pytania=0;

    fstream plik;
    plik.open("quiz.txt",ios::in);

//(...)

    while(getline(plik,linia))
    {
        switch(nr_linii)
        {
            case 1: temat=linia;                 break;
            case 2: nick=linia;                  break;
            case 3: tresc[nr_pytania]=linia;     break;
            case 4: odpA[nr_pytania]=linia;      break;
            case 5: odpB[nr_pytania]=linia;      break;
            case 6: odpC[nr_pytania]=linia;      break;
            case 7: odpD[nr_pytania]=linia;      break;
            case 8: poprawna[nr_pytania]=linia;  break;
        }

        if(nr_linii==8)
        {
            nr_linii=2; nr_pytania++;
        }
        nr_linii++;
    }

    plik.close();

    for (int i=0; i<=4; i++)
    {
  
//(...)

 

1 odpowiedź

+1 głos
odpowiedź 9 lipca 2015 przez Adrian1999 Nałogowiec (34,570 p.)
Wiesz czytam na tablecie co piszesz i niezbyt wygodnie, musze ciągle przewijać w dół,  i górę. Użyj na drugi raz komentarzy odrazu się będzie lepiej czytało

Podobne pytania

0 głosów
1 odpowiedź 550 wizyt
pytanie zadane 26 marca 2019 w C i C++ przez Nicolas Wielocha Nowicjusz (140 p.)
0 głosów
1 odpowiedź 208 wizyt
pytanie zadane 7 października 2017 w C i C++ przez Haker2004 Użytkownik (590 p.)
0 głosów
1 odpowiedź 302 wizyt

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...