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

Pytanie odnośnie quizu z odc. 7!

Object Storage Arubacloud
0 głosów
98 wizyt
pytanie zadane 8 sierpnia 2018 w C i C++ przez SAPIR Nowicjusz (180 p.)

Podczas włączania quizu system wywala mi błąd i zamyka konsole. Nie wiem czy problem leży w kodzie czy w codeblocks choć w to drugie wątpię bo inne programy mi działają.I dlaczego na odcinku zmienna string:linia oraz int: nr_linii=1,nr_pytania=0 są już w int main() a nie przy reszcie zmiennych? Za odpowiedzi z góry dziękuję :D

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <conio.h>
#include <algorithm>
#include <string>
#include <windows.h>

using namespace std;

string temat, nick;
string tresc[5];
string OdpA[5],OdpB[5],OdpC[5],OdpD[5];
string poprawna[5];
int punkty=0;
string odpowiedz;

int main()
{
    string linia;
    int nr_linii=1,nr_pytania=0;
    fstream plik;
    plik.open("quiz.txt",ios::in);
    if (plik.good() == false)
    {
        cout<<"Plik nie istnieje lub zostal przeniesiony!";
        exit(0);
    }
    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++)
    {
        cout<<endl<<tresc[i]<<endl;
        cout<<"A. "<<OdpA[i]<<endl;
        cout<<"B. "<<OdpB[i]<<endl;
        cout<<"C. "<<OdpC[i]<<endl;
        cout<<"D. "<<OdpD[i]<<endl;
        odpowiedz=getch();
        transform(odpowiedz.begin(),odpowiedz.end(),odpowiedz.begin(), ::tolower);

        if(odpowiedz==poprawna[i])
        {
            punkty++;
        }
    }
    cout<<"Zakonczyles test z wynikiem "<<punkty<<" na 5!";

    getchar();getchar();
    return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 8 sierpnia 2018 przez Jakub 0 Pasjonat (23,120 p.)

To że część zmiennych jest globalna a część lokalna w main(), jest w tym przypadku niestety zaniedbaniem ze strony autora kursu ( może nie tyle zaniedbaniem bo była mowa że stosowanie przez niego zmiennych globalnych ponoć ma być formą uproszczenia dla początkujących ). Różnica między zmiennymi o zasięgu globalnym i lokalnym ( czyli w funkcjach ) jest taka że te pierwsze są dostępne dla wielu funkcji w programie i trwają przez cały okres działania programu, te drugie natomiast są ograniczone do czasu życia funkcji ( no chyba że są np. statyczne ale to już bardziej obszerne tematy ). Tak samo mogą być one używane tylko w funkcji w której się znajdują. ( to co mówię o funkcjach bardziej zrozumiesz jak je poznasz lepiej, to chybna już następny odcinek. Bo na razie wszystko piszesz tylko w main'ie ).No i teraz zastanów się, wszystkie zmienne w programie używa tylko funkcja main(), po co więc ustawiać niektóre z nich w zasięgu globalnym? Przenieś je wszystkie na początek funkcji main().

 

Co do tego co powoduje błąd to na razie nie wiem, musiał bym się zastanowić a czasu za dużo nie mam. Albo ja potem dam znać albo już ci ktoś inny w tym pomoże;

Podobne pytania

+1 głos
1 odpowiedź 253 wizyt
pytanie zadane 24 sierpnia 2017 w Java przez jakubf10 Nowicjusz (130 p.)
0 głosów
1 odpowiedź 300 wizyt
pytanie zadane 18 marca 2016 w C i C++ przez Jardee Początkujący (420 p.)
+2 głosów
3 odpowiedzi 270 wizyt
pytanie zadane 6 grudnia 2015 w C i C++ przez evelynn Nowicjusz (140 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 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!

...