Wysłany: 2006-09-05, 20:34 [c/c++] Przesyłanie adresu tablicy do funkcji
Mam problem z przesyłaniem wskaźnika do funkcji, ale ten wskaźnik wskazuje na tablice 2 wymiarową. Przedstawiam wam kod całego programu (bo nie jest jeszcze taki duży ). Prosze nie zwracać uwagi na te dodatkowe pętle i zmienne. Chodzi tylko o to przesłanie tablicy bool do funkcji, ale że nie wiem co wyrzucić to dałwm wszysko .
using namespace std;
//////////////////////////////////////////////////
int sprawdz(int, int, bool /*nie wiem co tu wpisać!!!, mój typ to &*/); //***
//////////////////////////////////////////////////
main (){
srand(time(NULL));
bool tablica[MAX_X][MAX_Y];
for (int i=0;i<MAX_X;i++){
for (int j=0;j<MAX_Y;j++){
tablica[i][j]=0;
}
}
for (int i=0;i<ilosc_min;i++){
tablica[rand()%MAX_X][rand()%MAX_Y]=1;
}
sprawdz(rand()%MAX_X,rand()%MAX_Y, tablica); //***; tu też jest błąd, chodzi o 3 argument
system("pause");
return 0;
}
/////////////////////////////////////////////////
int sprawdz(int x, int y, bool /*nie wiem co tu wpisać!!!, mój typ to &tab*/){ //***
int wartosc;
if (tab[x][y]){
cout << "przegrales!!";
}
else {
cout <<"gramy dalej";
if (tab[x+1][y]) wartosc+=1;
/*if (tab[x+1][y+1]) wartosc+=1; //ten komentarz jest zbędny
if (tab[x][y+1]) wartosc+=1;
if (tab[x-1][y+1]) wartosc+=1;
if (tab[x-1][y]) wartosc+=1;
if (tab[x-1][y-1]) wartosc+=1;
if (tab[x][y-1]) wartosc+=1;
if (tab[x+1][y-1]) wartosc+=1;*/ //ten też
}
return wartosc;
}
Ten kod jest troche zamotany, ale mi chodzi głównie o linie oznaczone ***. Czyli jak powinny wyglądać te linie:
Kod:
int sprawdz(int, int, bool /* ... */); //definicja
int sprawdz(int x, int y, bool /* ... */){ //deklaracja
PS: o wiele czytelniejszy w jakim edytorze z kolorowaniem składni
PS2: Początek sapera tekstowego...
_________________ "Zawsze łatwiej jest zmienić kod, którego jeszcze nie napisałem"
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
temp.cpp:
Error E2034 temp.cpp 27: Cannot convert 'bool ( *)[9]' to 'bool * ( *)[9]' in function main()
Error E2342 temp.cpp 27: Type mismatch in parameter 'tab' (wanted 'bool * ( *)[9]', got 'bool ( *)[9]') in function main()
*** 2 errors in Compile ***
błędy dla linijek tak zrobionych
Kod:
int sprawdz(int, int, bool *tab[][9]);
int sprawdz(int x, int y, bool *tab[][9]){
Asdef, to co mi dałeś to tak pobierznie o wskaźnikach opisuje. Ale tam prawie nic nie ma o przesyłaniu tablic dwuwymiarowych (jedno ćwiczenie bez rozwiązania)
PS: Szkoda, że książke o c++ koledze pożyczyłem .
_________________ "Zawsze łatwiej jest zmienić kod, którego jeszcze nie napisałem"
int sprawdz(int, int, bool tab[][9]);
int sprawdz(int x, int y, bool tab[][9]) {
_________________ All beings in the heavens, on earth and in the underworld, have to bend the knee at the name of Jesus and every tongue has to acknowledge Jesus Christ as Lord, to the glory of God the Father.
Możesz pisać nowe tematy Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum