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

question-closed Błędne działanie programu c++ pod linuksem

Object Storage Arubacloud
+1 głos
132 wizyt
pytanie zadane 15 marca 2018 w C i C++ przez alter3 Nowicjusz (130 p.)
zamknięte 3 kwietnia 2018 przez alter3

Witam,

Chciałem przedstawić tutaj mały problem i być może uzyskać wyjaśnienie. Chodzi o program Quiz z kursu C++ Mirosława Zelenta (lekcja #7). Program "chodzi" bez problemu ale pod windowsem. W momencie uruchomienia go w code bloks pod linuksem (Debian 8, Debian 9) dzieją się dziwne rzeczy. Program się kompiluje i uruchamia bez wykazywania jakichkolwiek błędów. Podawanie poprawnych odpowiedzi powinno być podsumowane uwagą "Dobra odpowiedź" i dodaniem punktu. Tak jednak nie jest. Zawsze cztery pierwsze odpowiedzi są kwitowane uwagą "Zła odpowiedź" i nieprzyznanie żadnego punktu. Tylko piąta odpowiedź jest oceniona właściwie. Tak się dzieje niezależnie od wielkości litery odpowiedzi. Może użytkownicy linuksów spotkali się już z tym problemem. Może ktoś już rozwiązał ten problem. Byłbym wdzięczny za oświecenie mnie.

Poniżej wstawiam kod programu Quiz.

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <algorithm>
#include <string>

using namespace std;

string temat, nick;
string tresc[5];
string odpA[5], odpB[5], odpC[5], odpD[5];
string poprawna[5];
string odpowiedz;
int punkty=0;

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

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

    if (plik.good()==false)
    {
        cout<<"Nie udalo sie otworzyc pliku!";
        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;

        cout<<"Twoja odpowiedz: ";
        cin>>odpowiedz;

       /* transform(odpowiedz.begin(), odpowiedz.end(), odpowiedz.begin(), ::tolower);*/

        if (odpowiedz==poprawna[i])
        {
            cout<<"Dobrze! Zdobywasz punkt!"<<endl;
            punkty++;
        }
        else cout<<"Zle! Brak punktu! Poprawna odpowiedz: "<<poprawna[i]<<endl;

    }

    cout<<"Koniec quizu. Zdobyte punkty: "<<punkty;

    return 0;
}


Pozdrawiam

komentarz zamknięcia: Rozwiązanie problemu

1 odpowiedź

+1 głos
odpowiedź 16 marca 2018 przez j23 Mędrzec (194,920 p.)

Wydaje mi się, że już był wątek z takim samym problemem, tyle tylko, że tam chodziło o MacOS-a. Generalnie problemem jest to, że w Windowsie znak końca linii to \r\n, pod Linuksem to tylko \n. Otwórz plik quiz.txt w jakimś edytorze i przekonwertuj znaki końca linii na linuksowe.

komentarz 3 kwietnia 2018 przez alter3 Nowicjusz (130 p.)
Miałeś rację. Dokonałem konwersji znaków końca linii tekstu quiz.txt na Unix(LF) i problem zniknął. Dziękuję za pomoc. Temat do zamknięcia.

Podobne pytania

+2 głosów
0 odpowiedzi 165 wizyt
0 głosów
1 odpowiedź 243 wizyt
pytanie zadane 7 sierpnia 2022 w C i C++ przez Noizz00 Użytkownik (910 p.)
+1 głos
2 odpowiedzi 127 wizyt
pytanie zadane 22 grudnia 2021 w Python przez manjaro Nałogowiec (37,390 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!

...