Problem z odczytaniem pliku
Ostatnio zmodyfikowano 2010-03-31 14:04
bartek483 Temat założony przez niniejszego użytkownika |
Problem z odczytaniem pliku » 2010-03-28 18:45:16 Witamm Odrazu przepraszam ze daje taki kawal kodu ; ) Program nie moze odczytac pliku .txt, choc nie wiem jaka jest tego przyczyna ;/ Plik .txt zawiera: 2010 600 bmw 1900 1500 renault Podaje kod: #include <iostream> #include <conio.h> #include <fstream> #include <queue> #include <cstring>
using namespace std;
class Samochod { public: Samochod( const unsigned rok, const unsigned poj, const char * const nazwa ) : rok_pr( rok ) , pojemnosc( poj ) { nazwa_prod = new char[ 32 ]; strcpy( nazwa_prod, nazwa ); } int odczyt_rok() const { return rok_pr; } int odczyt_poj() const { return pojemnosc; } const char * odczyt_naz() const { return nazwa_prod; } Samochod( const Samochod & X ) : rok_pr( X.rok_pr ) , pojemnosc( X.pojemnosc ) { nazwa_prod = new char[ 32 ]; strcpy( nazwa_prod, X.nazwa_prod ); } private: int rok_pr; int pojemnosc; char * nazwa_prod; };
class Ubezpieczenia { public: Ubezpieczenia() { } void DodajSamochod( const Samochod & sam ); void WczytajPlik( ifstream & plik ); void PobierzPartie( int klasa, int ktory ); private: queue < Samochod > kolejka; queue < Samochod > kolejka2; queue < Samochod > kolejka3; };
void Ubezpieczenia::DodajSamochod( const Samochod & sam ) { if( sam.odczyt_poj() < 700 ) kolejka.push( sam ); else if( sam.odczyt_poj() > 700 && sam.odczyt_poj() < 1600 ) kolejka2.push( sam ); else if( sam.odczyt_poj() > 1600 ) kolejka3.push( sam ); }
void Ubezpieczenia::WczytajPlik( ifstream & plik ) { int rk, pjmn; char nzw[ 32 ]; plik.open( "auta.txt", ios::in ); while( !plik.good() ) { plik >> rk; plik >> pjmn; plik >> nzw; Samochod sam( rk, pjmn, nzw ); DodajSamochod( sam ); } plik.close(); }
void Ubezpieczenia::PobierzPartie( int klasa, int ile ) { ile--; if( klasa == 1 ) for( int i = 0; i < ile; ++i ) { Samochod & temp = kolejka.front(); cout << temp.odczyt_rok() << " " << temp.odczyt_poj() << " " << temp.odczyt_naz() << "\n"; kolejka.pop(); } else if( klasa == 2 ) for( int i = 0; i < ile; ++i ) { Samochod & temp2 = kolejka2.front(); cout << temp2.odczyt_rok() << " " << temp2.odczyt_poj() << " " << temp2.odczyt_naz() << "\n"; kolejka2.pop(); } else if( klasa == 3 ) for( int i = 0; i < ile; ++i ) { Samochod & temp3 = kolejka3.front(); cout << temp3.odczyt_rok() << " " << temp3.odczyt_poj() << " " << temp3.odczyt_naz() << "\n"; kolejka3.pop(); } }
int main( int argc, char ** argv ) { Ubezpieczenia pko; ifstream plik( "auta.txt" ); pko.WczytajPlik( plik ); pko.PobierzPartie( 2, 1 ); _getch(); return 0; }
Za wszelka pomoc z gory dzieki :) |
|
malan |
» 2010-03-28 19:22:52 Patrzysz tu: 16.3.1. Patrzysz na to: while( !plik.good() ) { plik >> rk; plik >> pjmn; plik >> nzw; Samochod sam( rk, pjmn, nzw ); DodajSamochod( sam ); } Patrzysz tu: http://kursy.ddt.pl/?LessonId=110. Patrzysz na to: while( !plik.good() ) { plik >> rk; plik >> pjmn; plik >> nzw; Samochod sam( rk, pjmn, nzw ); DodajSamochod( sam ); } Gdzie jest błąd? :) |
|
bartek483 Temat założony przez niniejszego użytkownika |
» 2010-03-28 19:38:19 Chodzi o to: while( !plik.eof() )? ; > Jezeli chodzi o to, to dalej nie odczytuje ;) |
|
malan |
» 2010-03-28 19:40:13 A gdzie i jak to wstawiłeś? |
|
bartek483 Temat założony przez niniejszego użytkownika |
» 2010-03-28 19:51:47 Tak dalem: void Ubezpieczenia::WczytajPlik( ifstream & plik ) { int rk, pjmn; char nzw[ 32 ]; plik.open( "auta.txt", ios::in ); while( !plik.eof() ) { plik >> rk; plik >> pjmn; plik >> nzw; Samochod sam( rk, pjmn, nzw ); DodajSamochod( sam ); } plik.close(); } |
|
malan |
» 2010-03-28 20:18:51 No to szukamy błędu :). 1. Sprawdź, czy w pliku są dane. 2. plik.open( "auta.txt", ios::in ); if( plik.good() ) { while( !plik.eof() ) { plik >> rk; plik >> pjmn; plik >> nzw; std::cout << rk << " " << pjmn << " " << nzw << std::endl; Samochod sam( rk, pjmn, nzw ); DodajSamochod( sam ); } } else { std::cout << "Blad pliku!"; std::cin.sync(); std::cin.get(); } 3. Skompiluje jeszcze u siebie - może coś wyłapię. |
|
bartek483 Temat założony przez niniejszego użytkownika |
» 2010-03-28 20:21:47 "Blad pliku." ;]
W pliku sa dane.
Ktos ma jakis pomysl dlaczego nie dziala? |
|
Elaine |
» 2010-03-28 22:11:25 Mhm, kolejny, któremu ukradli debugger? |
|
« 1 » 2 3 4 |