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

Program nie chce mi skompliować kodu i nie wiem w czym tkwi problem.

Object Storage Arubacloud
0 głosów
149 wizyt
pytanie zadane 24 lutego 2017 w C i C++ przez scheiba Nowicjusz (160 p.)

Otóż pracuje z kursem programowania C++ Pana Mirosława Zelenta i zatrzymałem się na odcinku 7, w którym to trzeba napisać QUIZ. Wszystko fajnie pięknie ale niechce mi skompilować ostatniej funkcji warunkowej if. Robiłem wszystko identycznie jak na filmiku i nie wiem co jest grane.

#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;
string odpowiedz;
int punkty=0;

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

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

   if (plik.good()==false)
   {
       cout<<"Nie udało się otworzyć pliku";
       exit(0);
   }
   while (getline(plik,linia))
   {
       switch(nr_lini)
       {
           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=linia;             break;
       }

       if (nr_lini==8) {nr_lini=2;nr_pytania++;}
       nr_lini++;
   }
   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 odpowiedź: ";
    cin>>odpowiedz;
    transform(odpowiedz.begin(),odpowiedz.end(),odpowiedz.begin(),::tolower);

    if (odpowiedz==poprawna[i])
    {
        cout<<"Dobra odpowiedź zdobywasz punkt"<<endl;
        punkty++;
        else cout<<"Zle. Poprawna odpowiedz to: "<<poprawna[i]<<endl;
    }
}
    cout<<endl<<"Koniec Quizu! Zdobyte punkty: "<<punkty;
    return 0;
}

Kompilator czepia mi się ostatnich linijek kodu. TJ: 59 - 69 linijki. Nie mam pojęcia co ja robie źle.

 

komentarz 24 lutego 2017 przez draghan VIP (106,230 p.)

Kompilator czepia mi się ostatnich linijek kodu. TJ: 59 - 69 linijki. Nie mam pojęcia co ja robie źle.

Podaj komunikat błędu.

Przypuszczam, że chodzi o:

if (odpowiedz==poprawna[i])

Nie możesz porównać obiektu std::string z elementem składowym obiektu std::string[i]. Mówiąc prosto: nie możesz porównać łańcucha ze znakiem.

1 odpowiedź

0 głosów
odpowiedź 24 lutego 2017 przez Michał Muzyka Pasjonat (24,080 p.)

to jest źle, poprawna tak jak odpowiedz to napisy(string), w tym momencie porównujesz podaną odpowiedź do znaku

odpowiedz==poprawna[i]

powinieneś zmienić na samej górze poprawna na tablicę żeby było:

string poprawna[4];

oraz tutaj:

case 8: poprawna[nr_pytania]=linia;             break;

 

komentarz 24 lutego 2017 przez scheiba Nowicjusz (160 p.)
No to jestem trochę do przodu ale jeszcze mam 4 błedy do rozwiązania oto ich treść:

63 error: 'expected ' } before else'

66 error: 'cout' does not name a type

67 error: 'expected unqualified-id before 'return'

68 error: 'expected declaration before  ' } ' token

nie wiem co to oznacza
komentarz 24 lutego 2017 przez Michał Muzyka Pasjonat (24,080 p.)

zamknąłeś else w klamrach ifa:

    if (odpowiedz==poprawna[i])
    {
        cout<<"Dobra odpowiedź zdobywasz punkt"<<endl;
        punkty++;
        else cout<<"Zle. Poprawna odpowiedz to: "<<poprawna[i]<<endl;
    }

powinno być tak

    if (odpowiedz==poprawna[i])
    {
        cout<<"Dobra odpowiedź zdobywasz punkt"<<endl;
        punkty++;
    }
    else cout<<"Zle. Poprawna odpowiedz to: "<<poprawna[i]<<endl;

 

1
komentarz 25 lutego 2017 przez scheiba Nowicjusz (160 p.)

Kurcze dziękuje ci z całego serca. Na następny raz będę pamiętał aby else po klamrze if wstawiać. Dzięki temu program działa jak należy. Pozdrawiam. Może kiedyś też będę pomagał innym na razie to ja w programowaniu raczkuje.laugh

 

Podobne pytania

0 głosów
1 odpowiedź 186 wizyt
0 głosów
0 odpowiedzi 368 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

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

...