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

Pomocy - podprogramy - quizz

Object Storage Arubacloud
0 głosów
192 wizyt
pytanie zadane 27 sierpnia 2016 w C i C++ przez hubercik Użytkownik (560 p.)
edycja 27 sierpnia 2016 przez hubercik

Witam :) 

Mógłby ktoś ten kod zapisać w "podprogramach" ? Próbuję i coś mi nie wychodzi :( Jest to quizz z odcinka Pana Mirosława :) Z góry dziękuję za każdą odpowiedź :P 

kod: 

 

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <string>
using namespace std;

string autor;
string kategoria;
string tresc[5];
string odpA[5], odpB[5], odpC[5], odpD[5];
string poprawne[5];

int main()
{



fstream plik;

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

    if(plik.good()==false)
    {
        cout<<"Plik o takiej nazwie nie istnieje!"<<endl;
        exit(0);
    }
    
    int nr_linii=1;
    int nr_pyt=0;
    string linia;
    while(getline(plik, linia))
    {
        switch(nr_linii)
        {
            case 1: autor=linia;            break;
            case 2: kategoria=linia;        break;
            case 3: tresc[nr_pyt]=linia;    break;
            case 4: odpA[nr_pyt]=linia;     break;
            case 5: odpB[nr_pyt]=linia;     break;
            case 6: odpC[nr_pyt]=linia;     break;
            case 7: odpD[nr_pyt]=linia;     break;
            case 8: poprawne[nr_pyt]=linia; break;
        }
        if(nr_linii==8) { nr_linii=2; nr_pyt++; }
        nr_linii++;
        }
    
        plik.close();
    
    
    
    string wpisz[5];
    int punkty=0;
    for(int i=0; i<=4; i++)
    {
    cout<<i+1<<"."<<tresc[i]<<endl;
    cout<<"odpA."<<odpA[i]<<endl;
    cout<<"odpB."<<odpB[i]<<endl;
    cout<<"odpC."<<odpC[i]<<endl;
    cout<<"odpD."<<odpD[i]<<endl;
    cout<<"Podaj odpowiedz: ";
    cin>>wpisz[i];
    transform(wpisz[i].begin(), wpisz[i].end(), wpisz[i].begin(), ::tolower);

    if(wpisz[i]==poprawne[i])
    {
        cout<<"Dobrze! Zdobywasz punkt!"<<endl;
        punkty++;
    }
    else
    {
        cout<<"Nie poprawna odpowiedz! Poprawna to: "<<poprawne[i]<<endl;
    }
        
    }
 
    cout<<"Koniec gry!"<<endl;
    cout<<"Zdobywasz: "<<punkty<<"/5 punktów!"<<endl;
 
    
    
return 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 27 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)
wybrane 27 sierpnia 2016 przez hubercik
 
Najlepsza

1. Funkcja std::transform(...) znajduje się w bibliotece <algorithm>.. załącz ją i powinno działać
2. http://forum.pasja-informatyki.pl/faq#jak-wstawic-kod-zrodlowy

komentarz 27 sierpnia 2016 przez hubercik Użytkownik (560 p.)
wszystko działa, tylko nie wiem jak ten kod napisać w podpragramach, tj było to w odcinku z własnymi funkcjami :)
komentarz 27 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)

Podprogramy? W sensie, że.. chcesz rozbić program na funkcje?
Jeżeli tak to musisz po prostu przemyśleć, który fragment kodu chcesz zastąpić jakąś funkcją.. przykładowo ten kod:

if(wpisz[i]==poprawne[i])
{
    cout<<"Dobrze! Zdobywasz punkt!"<<endl;
    punkty++;
}
else
{
    cout<<"Nie poprawna odpowiedz! Poprawna to: "<<poprawne[i]<<endl;
}


Możesz zastąpić używając takiej funkcji:

void Pisz_Odp(string &Odp, string &Odp_Pop) //Przesyłam argumenty przez referencję ('&', oryginalne zmienne), aby program nie tworzył niepotrzebnej kopii
{
    if(Odp==Odp_Pop)
    {
        cout<<"Dobrze! Zdobywasz punkt!"<<endl;
        punkty++;
    } else cout<<"Nie poprawna odpowiedz! Poprawna to: "<<Odp_Pop<<endl;
}

komentarz 27 sierpnia 2016 przez hubercik Użytkownik (560 p.)
Funkcje najlepiej pisać w void, nie? nie trzeba wtedy dopisywać return :D

Dzięki za poświęcenie czasu, miłego dnia :)
komentarz 27 sierpnia 2016 przez MetRiko Nałogowiec (37,110 p.)

W C++ istnieją różne nazewnictwa na różne funkcje. Ogólnie sama funkcja zawsze coś zwraca, ale jeżeli zwraca ona typ void (nic/pustkę) to wtedy mamy do czynienia z procedurą.. natomiast gdy funkcja znajduje się w jakiejś klasie/strukturze to mówimy, że jest to metoda. A to czy chcesz używać procedur, czy też nie to już zależy od sytuacji i potrzeb x) Dodam jeszcze, że w procedurze również możesz napisać return; wtedy program zakończy jej działanie (wyjdzie z niej), przed końcem.

Podobne pytania

0 głosów
0 odpowiedzi 77 wizyt
pytanie zadane 25 kwietnia 2019 w JavaScript przez asgaard Obywatel (1,300 p.)
0 głosów
3 odpowiedzi 180 wizyt
pytanie zadane 5 grudnia 2018 w C i C++ przez Mick_SQ6IYV Obywatel (1,020 p.)
0 głosów
1 odpowiedź 161 wizyt
pytanie zadane 4 lutego 2016 w C i C++ przez Ditrix Mądrala (5,650 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

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

...