Wczytywanie tablicy dwuwymiarowej z pliku
Ostatnio zmodyfikowano 2014-01-20 09:36
Atexor Temat założony przez niniejszego użytkownika |
Wczytywanie tablicy dwuwymiarowej z pliku » 2014-01-20 01:27:00 Witam, mam problem z pewnym zadaniem. Otóż muszę w nim stworzyć tablicę kwadratową NxN (N z klawiatury z przedziału od 1 do 30), wylosować liczby i zapisać to w formie "macierzy" do pliku tekstowego. Następnie za pomocą funkcji muszę te liczby wczytać z powrotem z pliku i uzupełnić tablicę w pierwszej kolumnie i w pierwszym wierszu, a brakujące elementy uzupełnić poprzez średnią 2 elementów znajdujących się bezpośrednio nad i po lewej od uzupełnianej komórki. Chciałbym na razie ogólnie wczytać całą tablicę z pliku, ale jak sprawdzam za pomocą printf to mam same zera. Jak takie coś zrobić? Próbowałem na kilka sposobów, ale w ogóle kompilować się nie dało albo program się bug'ował. Teraz wpadłem na pomysł aby wczytywał kolumnami i gdy dojdzie do końca to za pomocą continue, zerowaniem pozycji kolumny "j" i "i++" przechodzi do następnej iteracji, Bardzo prosiłbym o szybką pomoc i pozdrawiam ;) #include <stdio.h> #include <stdlib.h> #include <time.h> typedef float MAC[ 30 ][ 30 ];
void fun( MAC a, int Nf ) { int i = 0, j = 0; float liczba; MAC tab2; FILE * plik; plik = fopen( "wyniki3.txt", "rt" ); while( fscanf( plik, "%f", & liczba ) == 1 ) { tab2[ i ][ j ] = liczba; j++; if( j == Nf ) { j = 0; continue; } } printf( "\n\n" ); for( i = 0; i < Nf; i++ ) { for( j = 0; j < Nf; j++ ) { printf( "%.3f\t", tab2[ i ][ j ] ); } printf( "\n\n" ); } fclose( plik ); }
int main() { int i, j, N; FILE * plik; do { printf( "Podaj N z przedzialu [1,30]\n" ); scanf( "%d", & N ); } while( N < 1 || N > 30 ); plik = fopen( "wyniki3.txt", "wt" ); MAC tab; for( i = 0; i < N; i++ ) { for( j = 0; j < N; j++ ) { tab[ i ][ j ] = 1 + rand() % N; printf( "%.3f\t", tab[ i ][ j ] ); fprintf( plik, "%.3f\t", tab[ i ][ j ] ); } fprintf( plik, "\n" ); printf( "\n\n" ); } fun( tab, N ); fclose( plik ); system( "PAUSE" ); return 0; }
|
|
Wiesiek |
» 2014-01-20 07:05:22 wewnątrz funkcji main fclose należy wykonać przed wywołaniem funkcji fun. |
|
Atexor Temat założony przez niniejszego użytkownika |
» 2014-01-20 09:36:32 Dziękuję Ci bardzo, pomogło. Jeszcze tylko musiałem postinkrementację dopisać w warunku if, aby kolejne wiersze z tablicy wczytywało. Jak będę miał jeszcze problem z dokończeniem zadania to się zgłoszę, ale myślę powinno pójść już gładko.
Pozdrawiam |
|
« 1 » |