Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Lekcja 33] zadanie domowe

Ostatnio zmodyfikowano 2015-04-02 11:48
Autor Wiadomość
rzymcio9
Temat założony przez niniejszego użytkownika
[Lekcja 33] zadanie domowe
» 2015-04-02 11:30:47
Witam, moim problemem jest odczytanie ostatniej pozycji odczytanej przez program przy użyciu .tellg()kiedy pogram wszystkie liczby już wczytał i zostaje mu jedna ostatnia liczba to pokazuje, że pozycja z której pobrał dane to -1... Proszę o pomoc :)
C/C++
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream plik;
    streampos miejsce_odczytu;
    plik.open( "dane.txt" );
    if( !plik.good() )
    { cout << "Plik nie zostal uruchomiony, program zostanie zamkniety";
        return 0; }
    int a;
   
   
   
    while( !plik.eof() )
    {
        plik >> a;
        if( plik.fail() )
             break;
       
        cout << a;
        miejsce_odczytu = plik.tellg();
        cout << "   dane zostaly odczytane na pozycji nr : " << miejsce_odczytu << endl;
        plik.seekg( plik.tellg() + 3 );
       
       
       
    }
    return 0;
}



dane w pliku "dane.txt" : 33  3  3  3  3  3  3  4  5  6 78 6666
P-129887
pekfos
» 2015-04-02 11:35:11
To nie miejsce odczytu, tylko miejsce po odczycie.

C/C++
plik.seekg( plik.tellg() + 3 );
A to po co?
P-129890
rzymcio9
Temat założony przez niniejszego użytkownika
» 2015-04-02 11:48:00
Źle zrozumiałem zadanie :) chciałem co trzecią pozycję odczytywać, nie wiem czemu, zaraz poprawię, a jeżeli chodzi o .tellg() to nie ogarniam tego do końca.

Poprawione, zaczyna ładnie od pierwszej pozycji i przeskakuje co trzy, żeby bardziej się połapać w danych zmieniłem zawartość "dane.txt" na taką :
 33  1  2  3  4  5  3  4  5  6 78 6666

zadanie chyba wykonane, zamykam

C/C++
#include <iostream>
#include <fstream>
using namespace std;

int main()
{
    ifstream plik;
    streampos miejsce_odczytu;
    plik.open( "dane.txt" );
    if( !plik.good() )
    { cout << "Plik nie zostal uruchomiony, program zostanie zamkniety";
        return 0; }
    int a;
    int i = 3;
   
   
   
    while( !plik.eof() )
    {
        plik >> a;
        if( plik.fail() )
             break;
       
        if( i == 3 )
        {
           
            cout << a;
            i = 0;
            miejsce_odczytu = plik.tellg();
            cout << "   dane zostaly odczytane na pozycji nr : " << miejsce_odczytu << endl;
        }
       
        i++;
       
       
    }
    return 0;
}
P-129895
« 1 »
  Strona 1 z 1