[C++] Pomoc z programem
Ostatnio zmodyfikowano 2009-03-25 21:45
steckel Temat założony przez niniejszego użytkownika |
[C++] Pomoc z programem » 2009-03-25 17:09:28 Witam! Mam problem z moim programem: #include <iostream> #include <ctime> #include <console.h> using namespace std;
int wysokosc; int szerokosc; int il_min;
void wczytaj(); void losuj( int[][] );
int main() { wczytaj(); int plansza[ szerokosc ][ wysokosc ]; losuj( plansza ); system( "cls" ); }
void wczytaj() { cout << "Wprowadz wysokosc planszy:"; cin >> wysokosc; wysokosc += 2; if( wysokosc < 7 ) wysokosc = 5; if( wysokosc > 22 ) wysokosc = 22; cout << "Wprowadz szerokosc planszy:"; cin >> szerokosc; szerokosc += 2; if( szerokosc < 7 ) szerokosc = 5; if( szerokosc > 42 ) szerokosc = 42; cout << "Wprowadz ilosc min"; cin >> il_min; if( il_min < 5 ) il_min = 5; if( il_min > wysokosc * szerokosc * 4 / 5 ) il_min = wysokosc * szerokosc * 4 / 5; }
void losuj( int tab[][] ) { for( int a = 0; a < szerokosc; a++ ) { for( int b = 0; b < wysokosc; b++ ) { tab[ a ][ b ] = 0; } } srand( time( 0 ) ); for( int a = 0; a < il_min; ) { int x = rand() %( szerokosc - 2 ) + 1; srand( rand() ); int y = rand() %( wysokosc - 2 ) + 1; if( tab[ x ][ y ] == 0 ) { tab[ x ][ y ] = 9; for( int b = 0; b <= 2; b++ ) { for( int a = 0; b <= 2; a++ ) { if( tab[ x + a - 1 ][ y + b - 1 ] != 9 ) { tab[ x + a - 1 ][ y + b - 1 ] ++; } } } a++; } } } Błędy: multidimensional array must have bounds for all dimensions except the first In function `int main()': too many arguments to function `void losuj()' at this point in file At global scope: declaration of `tab' as multidimensional array must have bounds for all dimensions except the first In function `void losuj()': `tab' undeclared (first use this function) (Each undeclared identifier is reported only once for each function it appears in.) [Build Error] [main.o] Error 1 Niestety nie wiem o co chodzi bo chyba wszystko zadeklarowałem? Z góry dziękuję :) |
|
Patzick |
» 2009-03-25 17:22:32 trochę namieszałeś. Po pierwsze deklaracja funkcji przed main() lepiej, żeby była void losuj( int a, int b ); w mainie zmień z losuj( plansza );
losuj( szerokosc, wysokosc ); Jeszcze na końcu funkcję void losuj( int tab[][] )
void losuj( int a, int b ) Musisz jeszcze zadeklarować tablicę, najlepiej zrób to razem z innymi zmiennymi: int wysokosc; int szerokosc; int il_min; int tab[ a ][ b ]; To tak na pierwszy rzut oka, jak coś jeszcze nie będzie grało to pisz :) |
|
steckel Temat założony przez niniejszego użytkownika |
» 2009-03-25 17:37:44 Mam błąd w tych linijkach:
int tab[a][b]; //9 `a' was not declared in this scope //9 `b' was not declared in this scope
tab[a][b]=0; //40 `tab' undeclared (first use this function) |
|
pekfos |
» 2009-03-25 17:55:39 a i b to parametry funkcji losuj(). na to wychodzi że int tab[a] powinno być w funkcji losuj() |
|
steckel Temat założony przez niniejszego użytkownika |
» 2009-03-25 18:09:08 int tab[a][b]; //to ma być w funkcji losuj? Jak wtedy przypiszę wszystkie elementy tab[a][b] do plansza[szerokosc][wysokosc]?
|
|
DejaVu |
» 2009-03-25 18:24:34 Komunikat, który dostałeś brzmi mniej więcej tak: 'zmienna nie jest zadeklarowana w obecnej przestrzeni'. Oznacza to, że musisz ją utworzyć i zainicjować w tej funkcji (np. poprzez parametry), aby była widoczna i żebyś mógł jej używać. |
|
steckel Temat założony przez niniejszego użytkownika |
» 2009-03-25 18:34:54 Spróbuję inaczej sformułować problem: 1) Jak można utworzyć globalną tablicę 2-wymiarową typu int o rozmiarze podanym przez użytkownika z możliwością zmiany wartości jej elementów. 2) Jak można przekazać tablicę 2-wymiarową jako parametr funkcji?
|
|
pekfos |
» 2009-03-25 18:56:24 1.dynamiczne zarządzanie pamięcią: int * tab;
int main() { tab = new int[ x ][ y ] tab[ 2 ][ 3 ] = 2; return 0; } 2.wskaźniki int losuj( int * wsk );
int * tab = new int[ 4 ][ 8 ]; int costam = losuj( tab );
|
|
« 1 » 2 3 |