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

[C++] Pomoc z programem

Ostatnio zmodyfikowano 2009-03-25 21:45
Autor Wiadomość
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:

C/C++
#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ę :)
P-5006
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
C/C++
losuj( plansza );
//na
losuj( szerokosc, wysokosc );
Jeszcze na końcu funkcję
C/C++
void losuj( int tab[][] )
//na
void losuj( int a, int b )

Musisz jeszcze zadeklarować tablicę, najlepiej zrób to razem z innymi zmiennymi:
C/C++
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 :)
P-5007
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)
P-5008
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()
P-5009
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]?
P-5010
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ć.
P-5011
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?
P-5013
pekfos
» 2009-03-25 18:56:24
1.dynamiczne zarządzanie pamięcią:

C/C++
int * tab; //globalnie
//..
int main() {
    //..
    tab = new int[ x ][ y ] //x=wymiar x,y=wymiar y
    //..
    tab[ 2 ][ 3 ] = 2;
    //..
    return 0;
}

2.wskaźniki

C/C++
int losuj( int * wsk );
//..
int * tab = new int[ 4 ][ 8 ];
int costam = losuj( tab );
//..
P-5016
« 1 » 2 3
  Strona 1 z 3 Następna strona