Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Czyszczenie tablicy dwuwymiarowej

Ostatnio zmodyfikowano 2014-12-07 18:19
Autor Wiadomość
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ę?

C/C++
#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;
}
P-122421
pekfos
» 2014-12-06 23:06:56
zapelnianie_tablicy() nic nie zwraca, poza tym raczej dobrze. Na pewno kompilujesz program przed uruchomieniem?
P-122423
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...
P-122425
docentpp
» 2014-12-06 23:32:26
Zamiast

C/C++
int zapelnianie_tablicy( int tablica[ 10 ][ 10 ], int a, int b )


zastosuj
C/C++
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 ?!?!?!
P-122428
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.
P-122430
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...
P-122459
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 ;)
P-122460
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 );
P-122469
« 1 » 2
  Strona 1 z 2 Następna strona