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

Błąd wczytywania pliku

VPS Starter Arubacloud
–1 głos
358 wizyt
pytanie zadane 18 listopada 2018 w C i C++ przez krystian1997 Obywatel (1,020 p.)

Witam,

mam pytanie dlaczego porgram nie może wczytac mojego pliku?

Sprawdziłem czy plik znajduje sie w moim folderze z projektem, roszerzenie oraz nazwe.

1
komentarz 18 listopada 2018 przez Arkadiusz Waluk Ekspert (287,550 p.)
Kod na forum wstawiamy jako tekst w przeznaczonym do tego bloczku, na obrazku mało widać i nie można z niego niczego skopiować.
komentarz 18 listopada 2018 przez krystian1997 Obywatel (1,020 p.)

Wysłałem obrazek po to żeby było widać umieszczenie dodatkowych plików żeby sprawdzić czy tam jest wszystko poprawnie.

#include <iostream>
#include "pytanie.h" 
#include <stdio.h>
using namespace std;




int main() 
{
	Pytanie p1;
	p1.nr_pytania = 1;
	p1.wczytaj();
	p1.zadaj();
	p1.sprawdz();

	cout << "Koniec quizu. Punkty: " << p1.punkt;
	return 0;
}
#include <iostream>

using namespace std;

class Pytanie
{
public:
	string tresc;
	string a, b, c, d;
	int nr_pytania;
	string poprawna;
	string odpowiedz;
	int punkt;

	void wczytaj();
	void zadaj();
	void sprawdz();
};
#include <iostream>
#include "pytanie.h"
#include <fstream>
#include <cstdlib>
#include <string>

using namespace std;

void Pytanie::wczytaj()         //operator zasięgu
{
	fstream plik;
	plik.open("quiz.txt", ios::in);

		if (plik.good() == false)
		{
			cout << "Nie udało się otworzyć pliku.";
			exit(0);
		}
	int nr_linii = (nr_pytania - 1) * 6 + 1;
	int aktualny_nr = 1;
	string linia;

	while (getline(plik, linia)) 
	{
		if (aktualny_nr == nr_linii) tresc = linia;
		if (aktualny_nr == nr_linii+1) a = linia;
		if (aktualny_nr == nr_linii+2) b = linia;
		if (aktualny_nr == nr_linii+3) c = linia;
		if (aktualny_nr == nr_linii+4) d = linia;
		if (aktualny_nr == nr_linii+5) poprawna = linia;
		aktualny_nr++;
	}
	plik.close();

}
void Pytanie::zadaj()
{
	cout << endl << tresc << endl;
	cout << a << endl;
	cout << b << endl;
	cout << c << endl;
	cout << d << endl;
	cout << "------------------------------" << endl;
	cout << endl << "Odpowiedz: ";
	cin >> odpowiedz;
}
void Pytanie::sprawdz()
{
	if (odpowiedz == poprawna)
	{
		punkt = 1;
	}
	else punkt = 0;
}

 

1 odpowiedź

0 głosów
odpowiedź 19 listopada 2018 przez Bondrusiek Maniak (61,370 p.)

Witam,

spróbuj podać bezwzględną ścieżkę do tego pliku.

plik.open("quiz.txt", ios::in);
// Pamiętaj aby używać \\ . Zamień na : 
plik.open("C:\\JakisFolder\\quiz.txt", ios::in);

 

komentarz 19 listopada 2018 przez krystian1997 Obywatel (1,020 p.)
Ogólnie nie działa.Problem jest z wczytaniem pliku pytanie.h
komentarz 20 listopada 2018 przez Bondrusiek Maniak (61,370 p.)

Spróbuj wszystko wrzucić do jednego pliku main.cpp. Jak zadziała to znaczy że masz problem z podłączeniem plików do projektu. U mnie plik wczytał się prawidłowo.

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

using namespace std;

class Pytanie
{
public:
    string tresc;
    string a, b, c, d;
    int nr_pytania;
    string poprawna;
    string odpowiedz;
    int punkt;

    void wczytaj();
    void zadaj();
    void sprawdz();
};

void Pytanie::wczytaj()         //operator zasięgu
{
    fstream plik;
    plik.open("quiz.txt", ios::in);

        if (plik.good() == false)
        {
            cout << "Nie udało się otworzyć pliku.";
            exit(0);
        }
    int nr_linii = (nr_pytania - 1) * 6 + 1;
    int aktualny_nr = 1;
    string linia;

    while (getline(plik, linia))
    {
        if (aktualny_nr == nr_linii) tresc = linia;
        if (aktualny_nr == nr_linii+1) a = linia;
        if (aktualny_nr == nr_linii+2) b = linia;
        if (aktualny_nr == nr_linii+3) c = linia;
        if (aktualny_nr == nr_linii+4) d = linia;
        if (aktualny_nr == nr_linii+5) poprawna = linia;
        aktualny_nr++;
    }
    plik.close();

}
void Pytanie::zadaj()
{
    cout << endl << tresc << endl;
    cout << a << endl;
    cout << b << endl;
    cout << c << endl;
    cout << d << endl;
    cout << "------------------------------" << endl;
    cout << endl << "Odpowiedz: ";
    cin >> odpowiedz;
}
void Pytanie::sprawdz()
{
    if (odpowiedz == poprawna)
    {
        punkt = 1;
    }
    else punkt = 0;
}

int main(int argc,char* argv[]) {

    Pytanie p1;
    p1.nr_pytania = 1;
    p1.wczytaj();
    p1.zadaj();
    p1.sprawdz();

    cout << "Koniec quizu. Punkty: " << p1.punkt;

    return 0;
}

 

komentarz 20 listopada 2018 przez krystian1997 Obywatel (1,020 p.)
"Nie udało sie uruchomic pliku."

Podobne pytania

0 głosów
3 odpowiedzi 536 wizyt
pytanie zadane 23 listopada 2015 w C i C++ przez C☺ndzi Stary wyjadacz (12,100 p.)
0 głosów
0 odpowiedzi 456 wizyt
pytanie zadane 23 stycznia 2017 w C i C++ przez heros22pt Użytkownik (950 p.)
+1 głos
3 odpowiedzi 355 wizyt

92,454 zapytań

141,262 odpowiedzi

319,089 komentarzy

61,854 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...