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

Dlaczego mój kod działa poprawnie dopiero po usunięciu inkrementacji numeru linii w 45 wierszu ?

Cloud VPS
0 głosów
287 wizyt
pytanie zadane 24 października 2015 w C i C++ przez Michal5552 Początkujący (400 p.)
#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],poprawna[5];
string odpowiedz[5];
int pkt;
int lpkt[5];

int main()
{
	fstream plik;
	plik.open("quiz.txt",ios::in);
	
	if(plik.good()==false)
	{
		cout << "nie mozna otworzyc pliku!!!";
		exit(102);
	}
	
	string linia;
	int nr_linii=1;
	int nr_zad;
	
	while(getline(plik,linia))
	{
		 switch(nr_linii)
        {
            case 1: temat=linia;                 break;
            case 2: nick=linia;                  break;
            case 3: tresc[nr_zad] = linia;       break;
            case 4: odpA[nr_zad] = linia;        break;
            case 5: odpB[nr_zad] = linia;        break;
            case 6: odpC[nr_zad] = linia;        break;
            case 7: odpD[nr_zad] = linia;        break;
            case 8: poprawna[nr_zad] = linia;    break;
        }

        if (nr_linii==8) {nr_linii=2; nr_zad++;}
        nr_linii++;
	
 	}
	 
	
	plik.close();
	
	for(int i=0; i<5; i++)
	{
		cout << tresc[i];
		cout << "a): " << odpA[i] <<"\n";
		cout << "b): " << odpB[i] <<"\n";
		cout << "c): " << odpC[i] <<"\n";
		cout << "d): " << odpD[i] <<"\n";
		cin >> odpowiedz[i];
		transform(odpowiedz[i].begin(),odpowiedz[i].end(),odpowiedz[i].begin(),::tolower);
		system("cls");
		
	 if(odpowiedz[i]==poprawna[i])
		{
		pkt++;
		lpkt[i]=1;
		}
	}
	
	cout << "liczba uzyskanych przez ciebie punktow: " << pkt <<"\n" << "\n";
	
	if(pkt<5)	
	{
	int pktc;
	pktc=5-pkt;
	
	cout << "bledne odpowiedzi: " << "\n" << "\n";
	
	for(int i=0; i<pktc; i++)
		switch(lpkt[i])
		{
			case 0: cout << "twoja odpowiedz na zadanie nr: " << i+1 << odpowiedz[i] <<"\n"; cout << "poprawna odpowiedz to: " << poprawna << "\n" << "\n";
				
		}
	}
	return(102);
}

Próbowałem otworzyć plik tekstowy: quiz z 7 odcinka Pana Zelenta i jak jest wspomniane w temacie nie mogę uruchomić programu, wyskakuje mi błąd, dodam, iż używam deva 5.11.

3 odpowiedzi

+1 głos
odpowiedź 24 października 2015 przez radek024 Szeryf (77,160 p.)
wybrane 19 lipca 2018 przez Michal5552
 
Najlepsza
masz błąd przy includzie - to jest piąta linia.

próbowałeś nr_linii=nr_linii+1; ? Może zadziała, ale w to wątpie ;)
komentarz 25 października 2015 przez Michal5552 Początkujący (400 p.)
Kiedy napisałem int nr_zad=0;

zamiast int nr_zad; to wtedy zaskoczyło, nie wiem jakim cudem, gdyż program powinien traktować tego inta jako zero, no ale cóż :/
1
komentarz 25 października 2015 przez radek024 Szeryf (77,160 p.)
Nie, nie traktuje jako zero. Jeżeli podoba Ci się dziewczyna, którą pierwszy raz widzisz, zakładasz, że ma na imię Ania? Sądzę, że nie - tak samo jest tutaj ;)
komentarz 20 lipca 2018 przez mokrowski Mędrzec (158,900 p.)
Nie jest tak źle. NIektórzy dziwią się że nie ma na imię Pamela :)
+1 głos
odpowiedź 25 października 2015 przez Muminek Dyskutant (8,650 p.)
Zmienna lokalna nie ma definicji automatycznej 0. Nawet jak jest to int. Spróbuj sobie wypisać tak zadeklarowanego inta. Jako wartosci przechowuje pamięciowe śmieci. Definicja zmiennej globalnej oraz zmiennej z modyfikatororem static powoduje, ze zmienna jest tworzona w innym zakresie pamieci i jako wartosc na początku przyjmuje 0. Doczytaj sobie o static.
0 głosów
odpowiedź 24 października 2015 przez furas Maniak (53,800 p.)
Podstawowa zasada: podawaj treść błędu - najlepiej całego (Ctr+C/Ctrl+V) a nie trzeba będzie uruchamiać tego programu aby dowiedzieć się co jest nie tak.
komentarz 24 października 2015 przez Michal5552 Początkujący (400 p.)
Na przyszłość zapamiętam, w sumie nader rozsądna propozycja, pozdrawiam ;)

Podobne pytania

0 głosów
2 odpowiedzi 683 wizyt
0 głosów
1 odpowiedź 355 wizyt
–2 głosów
3 odpowiedzi 1,094 wizyt
pytanie zadane 23 września 2017 w JavaScript przez The Real Slim Stefan Początkujący (450 p.)

93,488 zapytań

142,422 odpowiedzi

322,772 komentarzy

62,906 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

Kursy INF.02 i INF.03
...