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

Odczytywanie z pliku obiektowo

Staż IT w Comarch
–1 głos
124 wizyt
pytanie zadane 22 września 2017 w C i C++ przez Partyjny Użytkownik (900 p.)
edycja 22 września 2017 przez Criss

Witam mam taki problem, że chce odczytać dane z pliku dla danego obiektu dla obiektu pierwszego linie od 1 do 4 dla drugiego od 5 do 8 a dla trzeciego od 9 do 12 lecz coś tu nie działa dla obiektu drugiego i trzeciego odczytuje źle. Pomocy!
 

#include <iostream>
#include "spis.h"

using namespace std;

int main()
{
    Slowko s[3];

    s[0].nr_pytania = 1;
    s[0].wczytaj();
    s[0].wyswietl();
    s[1].nr_pytania = 2;
    s[1].wczytaj();
    s[1].wyswietl();
    s[2].nr_pytania = 3;
    s[2].wczytaj();
    s[2].wyswietl();

    return 0;
}
#include <iostream>

using namespace std;

class Slowko
{
    public:

    string jeden;
    string dwa;
    string trzy;
    string cztery;

    int nr_pytania;

    void wczytaj(); //wczytuje dane z pliku .txt do programu
    void wyswietl();

};
#include <iostream>
#include "spis.h"
#include <cstdlib>
#include <fstream>
#include <windows.h>

using namespace std;

void Slowko::wczytaj()
{

    fstream plik;

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

    if(plik.good() == false)
    {
        cout<<"Nie odnaleziono pliku ze slowkami";
        exit(0);
    }

    string linia;
    int zaczynam_od_linii =((nr_pytania-1)*6+1);
    int aktualny_numer = 1;

    while(getline(plik, linia))
    {
        if(aktualny_numer == zaczynam_od_linii)
        {
            jeden = linia;

        }

        if(aktualny_numer == (zaczynam_od_linii+1))
        {
            dwa = linia;
        }

        if(aktualny_numer == (zaczynam_od_linii+2))
        {
            trzy = linia;
        }

        if(aktualny_numer == (zaczynam_od_linii+3))
        {
            cztery = linia;
        }

        aktualny_numer++;

    }

    plik.close();//////////////////////////////

}

void Slowko::wyswietl()
{

    cout<<jeden<<endl;
    cout<<dwa<<endl;
    cout<<trzy<<endl;
    cout<<cztery<<endl;

}
1
komentarz 22 września 2017 przez Eryk Andrzejewski VIP (136,620 p.)
Kod źródłowy proszę umieszczać w specjalnych bloczkach.

1 odpowiedź

0 głosów
odpowiedź 22 września 2017 przez Zetiar Użytkownik (840 p.)
wybrane 22 września 2017 przez Partyjny
 
Najlepsza
int zaczynam_od_linii =((nr_pytania-1)*6+1);

Jeśli mnożysz razy 6 to zmienna zaczynam_od_linii będzie za duża i np. dla 2 wychodzi 7 więc zaczynasz od 7 linii nie od 5.

Pomnóż to razy 4 nie 6.

int zaczynam_od_linii =((nr_pytania-1)*4+1);

 

Podobne pytania

0 głosów
0 odpowiedzi 195 wizyt
pytanie zadane 19 listopada 2017 w C i C++ przez edglrdmmslt Nowicjusz (120 p.)
0 głosów
1 odpowiedź 386 wizyt
0 głosów
2 odpowiedzi 106 wizyt
pytanie zadane 1 września 2017 w C i C++ przez wojtekd09 Początkujący (260 p.)
Porady nie od parady
Odznacz odpowiedź zieloną fajką, jeśli uważasz, że jest ona najlepsza ze wszystkich i umożliwiła ci rozwiązanie problemu.
Ciekawy innych porad? Odwiedź tę stronę!

48,396 zapytań

89,943 odpowiedzi

181,000 komentarzy

23,398 pasjonatów

Przeglądających: 182
Pasjonatów: 11 Gości: 171

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...