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

Odczytywanie z pliku obiektowo

Ultraszybki serwer VPS NVMe BIZNES
–1 głos
123 wizyt
pytanie zadane 22 września 2017 w C i C++ przez Partyjny Użytkownik (620 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 (128,360 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 120 wizyt
pytanie zadane 19 listopada 2017 w C i C++ przez edglrdmmslt Nowicjusz (120 p.)
0 głosów
1 odpowiedź 189 wizyt
0 głosów
2 odpowiedzi 99 wizyt
pytanie zadane 1 września 2017 w C i C++ przez wojtekd09 Początkujący (260 p.)
Porady nie od parady
Komentarze do pytań nie służą do odpowiadania, od tego jest wydzielona sekcja odpowiedzi. Funkcją komentarzy jest natomiast możliwość uzyskania dodatkowych informacji na temat samego posta.
Ciekawy innych porad? Odwiedź tę stronę!

44,251 zapytań

84,047 odpowiedzi

167,337 komentarzy

21,161 pasjonatów

Przeglądających: 181
Pasjonatów: 8 Gości: 173

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.

...