Dvourozměrné pole – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dvourozměrné pole – C / C++ – Fórum – Programujte.comDvourozměrné pole – C / C++ – Fórum – Programujte.com

 

T-erorrr0
Duch
9. 8. 2006   #1
-
0
-

Prosím nevíte někdo jak předat funkci jako parametr 2D-pole ?
Potřeboval bych aby ta funkce vypsala hodnoty toho pole na obrazovku. Vím jak předat funkci jako parametr normální pole, ale s tím dvourozměrným si nevím rady.

Nahlásit jako SPAM
IP: ...–
Kamil Skála0
Návštěvník
10. 8. 2006   #2
-
0
-

Simte a co s tim mas za problem?
V tom nic neni

Nahlásit jako SPAM
IP: ...–
Kdyz chces nahoru, musis dolu :-) dchub://allhub.net
some_one0
Návštěvník
10. 8. 2006   #3
-
0
-

asi takhle:

void vypis_pole(int w, int h, int ** pole)
{
...
}



volání:

int[20][20] p;

vypis_pole(20,20,p);


(jen mi tam možná chybí dereference)

Nahlásit jako SPAM
IP: ...–
T-erorrr0
Duch
10. 8. 2006   #4
-
0
-

some_one napsal:

asi takhle:

void vypis_pole(int w, int h, int ** pole)
{
...
}



vol?n?:

int[20][20] p;

vypis_pole(20,20,p);


(jen mi tam mo?n? chyb? dereference)



Bohužel tak tohle mi nefunkuje. Při kompilaci mi to na řádku, kde se volí funkce hlásí chybu : cannot convert `int (*)[5]' to `int**' for argument `3' to `void vypis_pole(int, int, int**)'

Nahlásit jako SPAM
IP: ...–
Peter D.0
Expert
10. 8. 2006   #5
-
0
-

some_one napsal:

asi takhle:

void vypis_pole(int w, int h, int ** pole)
{
...
}



volání:

int[20][20] p;

vypis_pole(20,20,p);


(jen mi tam možná chybí dereference)


int[20][20] p;

skus to zmenit na
int p[20][20]


2 some_one , mal by si uz nieco v C++ napisat :)

Nahlásit jako SPAM
IP: ...–
Program nemusi fungovat rychle, staci ze funguje dostatecne rychle.
some_one0
Návštěvník
10. 8. 2006   #6
-
0
-

Jsem si přesně říkal, že tenhle řádek určitě napíšu blbě :D

jinak, pokud si pamatuju, tak by to možná sežrali i:

void vypis_pole(int w, int h, int p[][]);

ale jistý si moc nejsem

Nahlásit jako SPAM
IP: ...–
T-erorrr0
Duch
11. 8. 2006   #7
-
0
-

some_one napsal:

Jsem si p?esn? ??kal, ?e v tenhle ??dek ur?it? nap??u blb? :D

jinak, pokud si pamatuju, tak by to mo?n? se?rali i:

void vypis_pole(int w, int h, int p[][]);

ale jist? si moc nejsem



U? jsem na to p?i?el, je to n?co podobn?ho tomu co jsi napsal




int p[5][5];

vypis_pole(5,5,p); // Vol?n?

// Akor?t m?sto - void vypis_pole(int w, int h, int p[][])
void vypis_pole(int w, int h, int p[][5])
{
...
}

Nahlásit jako SPAM
IP: ...–
Jura_0
Stálý člen
11. 8. 2006   #8
-
0
-

T-erorrr napsal:

some_one napsal:

Jsem si přesně říkal, že v tenhle řádek určitě napíšu blbě :D

jinak, pokud si pamatuju, tak by to možná sežrali i:

void vypis_pole(int w, int h, int p[][]);

ale jistý si moc nejsem



Už jsem na to přišel, je to něco podobného tomu co jsi napsal




int p[5][5];

vypis_pole(5,5,p); // Volání

// Akorát místo - void vypis_pole(int w, int h, int p[][])
void vypis_pole(int w, int h, int p[][5])
{
...
}



Uff.. Ono je potreba vedet, jak se predavaji pole funkcim. U jednorozmerneho pole je to jednoduche- preda se ukazatel na prvni prvek pole. U vicerozmernych poli se to zacina trochu komplikovat -predava se ukazatel na pole, tzn. tato konstrukce:


int pole( size_t rows, int (*p)[5]);

nebo ukazatel na prvni radku pole, tedy jak jsi napsal vyse.
Ale v obou pripadech je nutne predavat pocet sloupcu!!!

No, a nakonec, jak se predava pole pointru - jednoduse, jak uz napsal
some_one jako pointer na pointer.


Nahlásit jako SPAM
IP: ...–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 31 hostů

Podobná vlákna

Dvourozměrné pole — založil Yenkee

Dvourozměrné pole — založil kok1n

C++,Dvourozmerne pole — založil mokvar

Dvourozmerne pole — založil Merik

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý