Wczytanie macierzy z pliku .txt
Ostatnio zmodyfikowano 2014-01-28 12:48
saszkaa Temat założony przez niniejszego użytkownika |
Wczytanie macierzy z pliku .txt » 2014-01-27 23:45:48 Witam mam ogromny problem z zapisem do tablicy macierzy z pliku txt jak by ktoś miał jakiś pomysł jak to zrobić to bardzo bym prosił żeby to jakoś wytłumaczył :) oto mój kod : #include <iostream> #include <string> #include <fstream> using namespace std;
void funkcja( fstream & plik, int macierz[ 10 ][ 10 ] ) { wczytac macierz i zapisac do tablicy... }
int main() { int macierz[ 10 ][ 10 ]; int tab[ 10 ][ 10 ]; for( int i = 0; i < 10; i++ ) { tab[ 0 ][ i ] = 0; } for( int i = 0; i < 10; i++ ) { tab[ 1 ][ i ] = rand() % 9 + 1; } for( int i = 2; i < 10; i++ ) { for( int j = 0; j < 10; j++ ) { tab[ i ][ j ] = 0; } } for( int i = 0; i < 10; i++ ) { for( int j = 0; j < 10; j++ ) { cout << tab[ i ][ j ] << " "; } cout << endl; } fstream plik( "data.txt", ios::out | ios::in ); if( plik.good() == true ) { cout << "uzyskano dostep do pliku!" << endl; } for( int i = 0; i < 10; i++ ) { for( int j = 0; j < 10; j++ ) { plik << tab[ i ][ j ] << " "; } plik << endl; } funkcja( plik, macierz ); system( "PAUSE" ); return 0; } |
|
Atexor |
» 2014-01-28 00:10:27 Witaj, jak możesz to kod wstawiaj w znacznikach [cpp]...[/cpp], będzie lepiej widoczny. Ja miałem podobny problem z wczytywaniem macierzy z pliku tekstowego (język C, nie C++) i rozwiązałem to w taki sposób: int i = 0, j = 0;
while( fscanf( plik, "%f", & liczba ) == 1 ) { tab2[ i ][ j ] = liczba; j++; if( j == N ) { j = 0; i++; continue; } }
Czyli po prostu wczytywałem z pliku liczby, dopóki nie doszło do końca (==1). Z każdym kolejnym wczytaniem zapisywałem liczbę do tablicy o współrzędnych i,j, następnie korzystałem z inkrementacji "j" (aby przechodziło do kolejnej kolumny). Kiedy doszło do końca tej kolumny (if j==N, gdzie N to rozmiar macierzy) to przechodziło do następnej iteracji (kroku) przy użyciu continue, wcześniej zwiększając wiersz o 1 i zerując kolumny... i tak do końca. Patrząc na Twój kod to w C++ powinno być analogicznie. Pozdrawiam |
|
alixir |
» 2014-01-28 12:48:44 Może to ci rozjaśni umysł :) #include <iostream> #include <fstream>
using namespace std;
typedef struct { int tab[ 10 ][ 10 ]; } tsMatrix;
int readFromFile( fstream & hf, tsMatrix & m ) { hf.open( "data.txt" ); if( !hf.good() ) { cout << "Odmowa dostepu!" << endl; return 0; } int i = 0, j = 0, n = 0; while( hf >> m.tab[ i ][ j ] ) { if( ++j >= 10 ) { j = 0; i++; } n++; if( n >= 100 ) break; } hf.close(); return n; }
void showMatrix( tsMatrix & m ) { for( int i = 0; i < 10; i++ ) { for( int j = 0; j < 10; j++ ) cout << m.tab[ i ][ j ] << " "; cout << endl; } }
int main() { tsMatrix matrix; fstream hfile; if( readFromFile( hfile, matrix ) == 100 ) showMatrix( matrix ); system( "PAUSE" ); return 0; }
|
|
« 1 » |