Merkury_Code Temat założony przez niniejszego użytkownika |
[PROBLEM] Odzczytywanie danych z pliku. » 2014-03-23 12:34:36 Witam, napisalem program, ktory docelowo ma odczytywac dane z pliku. Plik wizytowka.txt ma 6 linijek tekstu a niestety wyswietla tylko pierwsze 3. Nie mam juz pomyslu co jest nie tak. #include <iostream> #include <fstream> #include <cstdlib>
using namespace std;
string imie[ 2 ], nazwisko[ 2 ]; int nr_tel[ 2 ];
int main() { fstream plik; plik.open( "wizytowka.txt", ios::in ); if( !plik.good() ) { cout << "Nie ma takiego pliku!"; exit( 0 ); } string linia; int nr_linii = 1; int nr_pacjenta = 0; while( getline( plik, linia ) ) { switch( nr_linii ) { case 1: imie[ nr_pacjenta ] = linia; break; case 2: nazwisko[ nr_pacjenta ] = linia; break; case 3: nr_tel[ nr_pacjenta ] = atoi( linia.c_str() ); break; } if( nr_linii == 3 ) { nr_linii == 1; nr_pacjenta++; } else nr_linii++; } plik.close(); for( int i = 0; i <= nr_pacjenta; i++ ) { cout << imie[ i ] << endl; cout << nazwisko[ i ] << endl; cout << nr_tel[ i ] << endl; } return 0; }
|
|
OczkoSX |
» 2014-03-23 12:38:05 Tam gdzie masz nr_linii++; to dodaj przed tym else ;) Ponieważ gdy dajesz kolejnego pacjenta to zaczyna od drugiej linii od razu. Numerację linii daj od zera |
|
Merkury_Code Temat założony przez niniejszego użytkownika |
» 2014-03-23 12:45:51 ok, z tym else masz racje, ale nr_linii, musi byc rowny 1 .Poza tym po dodaniu elsa, dalej nie dziala prawidlowo. |
|
OczkoSX |
» 2014-03-23 12:49:00 Zmień tablice imion, nazwisk itp. na tą o indeksie 2. Tablica[1] przechowuje tylko jedną zmienną jaką jest tablica[0], a tablica[2] przechowuje tablica[0] i tablica[1]. Nie wiedziałem jak wytłumaczyć :D No i zobacz z numeracją linii od zera...
EDIT:: Chociaż jest dobrze z numeracją, sry :D EDIT2:: if (nr_linii == 3) { nr_linii == 1; nr_pacjenta++; }, zamień na if (nr_linii == 3) { nr_linii = 1; nr_pacjenta++; } |
|
Merkury_Code Temat założony przez niniejszego użytkownika |
» 2014-03-23 12:51:20 No tak, tablice zostaly powiekszone, ale nadal nie dziala. Jakis pomysl ? Aktualizuje kod u gór. |
|
Merkury_Code Temat założony przez niniejszego użytkownika |
» 2014-03-23 12:57:32 dobra dziala, poprawny kod ( moze komus sie przyda) #include <iostream> #include <fstream> #include <cstdlib>
using namespace std;
string imie[ 2 ], nazwisko[ 2 ]; int nr_tel[ 2 ];
int main() { fstream plik; plik.open( "wizytowka.txt", ios::in ); if( !plik.good() ) { cout << "Nie ma takiego pliku!"; exit( 0 ); } string linia; int nr_linii = 1; int nr_pacjenta = 0; while( getline( plik, linia ) ) { switch( nr_linii ) { case 1: imie[ nr_pacjenta ] = linia; break; case 2: nazwisko[ nr_pacjenta ] = linia; break; case 3: nr_tel[ nr_pacjenta ] = atoi( linia.c_str() ); break; } if( nr_linii == 3 ) { nr_linii = 1; nr_pacjenta++; } else nr_linii++; } plik.close(); for( int i = 0; i <= nr_pacjenta - 1; i++ ) { cout << imie[ i ] << endl; cout << nazwisko[ i ] << endl; cout << nr_tel[ i ] << endl; } return 0; }
|
|
OczkoSX |
» 2014-03-23 12:58:19 Poprawny kod: #include <iostream> #include <string> #include <fstream> #include <cstdlib> #include <conio.h>
using namespace std;
string imie[ 2 ], nazwisko[ 2 ]; int nr_tel[ 2 ];
int main() { fstream plik; plik.open( "wizytowka.txt" ); if( !plik.good() ) { cout << "Nie ma takiego pliku!"; exit( 0 ); } string linia; int nr_linii = 0; int nr_pacjenta = 0; while( getline( plik, linia ) ) { switch( nr_linii ) { case 0: imie[ nr_pacjenta ] = linia; break; case 1: nazwisko[ nr_pacjenta ] = linia; break; case 2: nr_tel[ nr_pacjenta ] = atoi( linia.c_str() ); break; } if( nr_linii == 3 ) { nr_linii = 0; nr_pacjenta++; } else nr_linii++; } plik.close(); for( int i = 0; i <= nr_pacjenta; i++ ) { cout << imie[ i ] << endl; cout << nazwisko[ i ] << endl; cout << nr_tel[ i ] << endl; } getch(); return 0; } Oj, nie zauważyłem że napisałeś PS. Nie miałeś dołączonych wszystkich bibliotek. <conio.h> ja dodałem aby móc skorzystać z getch(), które zatrzymuje program do momentu naciśnięcia dowolnego przycisku |
|
« 1 » |