luuuzik Temat założony przez niniejszego użytkownika |
Czyszczenie tablicy dwuwymiarowej » 2014-12-06 23:03:18 Witam, mam mały problem: bawiłem się tablicami dwuwymiarowymi, jednakże coś źle chyba zapisałem i nie mogę wyczyścić mojej tablicy. Cały czas wypisuje mi ona liczby z przedziału 1 - 100. Podpowie mi ktoś może co źle robię? #include <iostream> #include <ctime> #include <cstdlib> using namespace std;
int zapelnianie_tablicy( int tablica[ 10 ][ 10 ], int a, int b ) { for( a = 0; a < 10; a++ ) { for( b = 0; b < 10; b++ ) tablica[ a ][ b ] = 0; } }
void wypisywanie_tablicy( int tablica[ 10 ][ 10 ], int a, int b ) { for( a = 0; a < 10; a++ ) { cout << "\n"; for( b = 0; b < 10; b++ ) cout << tablica[ a ][ b ] << ","; } }
int main() { srand( time( NULL ) ); int tablica[ 10 ][ 10 ]; cout << "Zapelnianie tablicy" << endl; zapelnianie_tablicy( tablica, 10, 10 ); cout << "Pokaz zawartosc: " << endl; wypisywanie_tablicy( tablica, 10, 10 ); return 0; }
|
|
pekfos |
» 2014-12-06 23:06:56 zapelnianie_tablicy() nic nie zwraca, poza tym raczej dobrze. Na pewno kompilujesz program przed uruchomieniem?
|
|
luuuzik Temat założony przez niniejszego użytkownika |
» 2014-12-06 23:10:51 Tak, za każdym razem. Nawet kompilator zamknąłem, i uruchomiłem go od nowa ale mam to samo... |
|
docentpp |
» 2014-12-06 23:32:26 Zamiast int zapelnianie_tablicy( int tablica[ 10 ][ 10 ], int a, int b )
zastosuj void zapelnianie_tablicy( int tablica[ 10 ][ 10 ], int a, int b )
Być może z tego błędu są złe wartości w macierzy ?!?!?! |
|
luuuzik Temat założony przez niniejszego użytkownika |
» 2014-12-06 23:44:38 Poprawiłem, jednakże problem pozostał:/ Wy też macie ten błąd w kompilatorze? Może coś u siebie w kompilatorze zepsułem przez przypadek. |
|
Tomek_z_W11 |
» 2014-12-07 13:47:20 Problem jest kompletnie inny, jeżeli chcesz go dobrze zrozumieć, to poczytaj sobie o przekazywaniu argumentów do funkcji, ja od siebie powiem tylko tyle, że tablica którą wypełniasz w funkcji jest "inna" od tej w funkcji wypisującej oraz od tej w mainie.
Żeby rozwiązać problem możesz pokombinować ze wskaźnikami - zrobić dynamiczną tablicę dwuwymiarową lub pobawić się z referencją, ale w tym drugim temacie ja nie czuje się pewnie, więc nie będę Ci podpowiadał bo jeszcze coś źle napisze... |
|
Tomek_z_W11 |
» 2014-12-07 13:48:50 A jeżeli chodzi o błąd w kompilatorze, to się nie zdarza, prędzej programista coś źle napisze, niż kompilator się pomyli ;) |
|
Monika90 |
» 2014-12-07 15:17:26 tablica którą wypełniasz w funkcji jest "inna" od tej w funkcji wypisującej oraz od tej w mainie. |
No kiedy właśnie jest to ta sama tablica. Ponieważ taka deklaracja void zapelnianie_tablicy( int tablica[ 10 ][ 10 ], int a, int b ); jest rónoważna takiej: void zapelnianie_tablicy( int tablica[][ 10 ], int a, int b ); a ta jest równoważna tej: void zapelnianie_tablicy( int( * tablica )[ 10 ], int a, int b ); |
|
« 1 » 2 |