Lekcja 35 metoda tellg pomija dane z pliku
Ostatnio zmodyfikowano 2016-10-12 17:17
grego Temat założony przez niniejszego użytkownika |
Lekcja 35 metoda tellg pomija dane z pliku » 2016-10-11 18:52:53 Napisałem program, który wczytuje z pliku tekstowego liczby od 1 do 8. Problem w tym, że po użyciu metody tellg program wczytuje tylko 3 liczby i podaje 3 pozycje. Pytanie brzmi jak powinienem użyć tej metody aby program zaczął poprawnie działać #include <iostream> #include <fstream> #include <string> using namespace std; bool Wczytaj_liczby( ifstream & plik, int & i ) { int z; plik.clear(); plik >> z; int pozycja = plik.tellg(); if( plik.bad() ) { cout << "Blad sprzetowy!" << endl; return false; } if( plik.fail() ) { return false; } else { cout << "Wczytana liczba to: " << z << endl; cout << "Pozycja pliku: " << pozycja << endl; } i += z; } bool Wczytaj_Plik( string nazwaPliku ) { int i = 0; ifstream plik; plik.open( nazwaPliku.c_str() ); if( !plik.good() ) return false; else cout << "Wczytano" << endl; plik.seekg( 0 ); while( !plik.eof() ) { if( !Wczytaj_liczby( plik, i ) && plik.fail() ) break; } cout << "Suma Wszystich liczb to: " << i << endl; return true; } int main() { if( !Wczytaj_Plik( "Dane.txt" ) ) cout << "Nie wczytano pliku" << endl; return 0; }
|
|
mateczek |
» 2016-10-11 22:06:55 masz jakiś powód by tak kombinować ?? #include<iostream> #include<fstream> using namespace std; int main() { ifstream plik( "plik.txt" ); if( !plik ) { cout << "brak pliku" << endl; return 0; } int liczba, pozycja, suma = 0; pozycja = plik.tellg(); while( plik >> liczba ) { cout << "na pozycji " << pozycja << " znajduje sie liczba " << liczba << endl; pozycja = plik.tellg(); suma += liczba; } cout << "suma liczb = " << suma << endl; return 0; } |
|
grego Temat założony przez niniejszego użytkownika |
» 2016-10-12 16:55:49 Niestety podany kod źródłowy wciąż wczytuje 3 cyfry i 3 pozycje ( w przypadku zapisania liczb w jednym wierszu, które są oddzielone białymi znakami wczytują się 4 liczby i 4 pozycje) . A względem kombinowania to eksperymentuje z kodem źródłowym i utrwalam wiadomości z poprzednich lekcji. |
|
mateczek |
» 2016-10-12 16:56:34 podaj jaki masz plik bez tego możemy tylko gdybać ?? |
|
grego Temat założony przez niniejszego użytkownika |
» 2016-10-12 17:04:48 Link do pliku https://www.easypaste.org/file/manage/s7Ifc5hpK8ERzOBVMQGb?lan |
|
mateczek |
» 2016-10-12 17:11:44 plik w porządku kod w porządku. Pewnie wrzucasz plik nie w to miejsce co trzeba. a otwierasz inny w którym masz 3 cyfry :P na pozycji 0 znajduje sie liczba 1 na pozycji 3 znajduje sie liczba 2 na pozycji 5 znajduje sie liczba 3 na pozycji 7 znajduje sie liczba 4 na pozycji 9 znajduje sie liczba 5 na pozycji 11 znajduje sie liczba 6 na pozycji 13 znajduje sie liczba 7 na pozycji 15 znajduje sie liczba 8 suma liczb = 36
dane.txt to dość popularna nazwa :P |
|
grego Temat założony przez niniejszego użytkownika |
» 2016-10-12 17:17:50 Podałem ścieżkę bezwzględną w twoim kodzie jak i w moim wciąż nie działa (dane.txt były jednym plikiem o tej nazwie w katalogu roboczym), ale po stworzeniu nowego pliku tekstowego z tymi samymi danymi wszystko jest w porządku. Jakiś pomysł dlaczego ? No i przede wszystkim dziękuje za pomoc :). |
|
« 1 » |