Strona Główna     FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy


Poprzedni temat :: Następny temat
[c/c++] Przesyłanie adresu tablicy do funkcji
Autor Wiadomość
Maciek 
Programmer


Pomógł: 9 razy
Skąd: Radom
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 ;) .
Kod:
#include <iostream>
#include <cstdlib>

#define MAX_X 9
#define MAX_Y 9
const ilosc_min=10;

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"
 
 
   
Asdef 
Administrator



Pomógł: 32 razy
Skąd: Lodz
Wysłany: 2006-09-06, 11:40   

tu masz fajnie wytłumaczone jak co i jak :)
http://home.agh.edu.pl/~p...do%20funkcji%22
_________________
PCT szuka ludzi dobrej woli, którzy jak mają ciekawe artykuły pisane z własnej ręki, to oczywiście można je nadsyłać nawet z gościa, po zatwierdzeniu przez moderatora…
http://www.pctown.pl/submitnews.php
lub wysyłać na asdef(malpa)o2.pl
http://img528.imageshack.us/img528/3311/dn9ar.png
 
   
Maciek 
Programmer


Pomógł: 9 razy
Skąd: Radom
Wysłany: 2006-09-06, 17:03   

Cytat:
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 :mad: .
_________________
"Zawsze łatwiej jest zmienić kod, którego jeszcze nie napisałem"
 
 
   
fedo 

Skąd: Zawiercie
Wysłany: 2006-09-14, 16:32   

IMHO powinno być:
Kod:
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.
 
 
   
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
system walidacji dla gości opracował Petermechanic
Forum komputerowe
Strona wygenerowana w 0,09 sekundy. Zapytań do SQL: 9