Posted By: Neuromancer (... bright eyes ...) on 'CZprogram'
Title:     Re: Dvourozmerne pole objektu v C++
Date:      Sun Jul 27 22:22:48 2003

> Ahoj,
> 
> potrebuji nadefinovat a predavat dvourozmerne pole objektu, zkousel jsem
> neco 
> (viz. program dole) ale nejak mi to nefunguje. Muze mi to nekdo prepsat do 
> chodiciho tvaru? 
> 
> #include "stdafx.h"
> #include <iostream.h>
> 
> // definujeme si objekt
> class Bod 
> {
> public:
>    int x;
>    int y;
> };
> 
> void napln(Bod **pole)
> {
>    for (int i = 0; i<3; i++)
>    {
>       for (int j = 0; i<3; i++)
>       {  
>          // Tady se bude neco ukladat do pole
>          Bod k;
>          k.y = i;
>          k.x = j;
>          pole[i][j] = k;
> 
>       }
>    }
> }
> 
> 
> void main(int argc, char* argv[])
> {
> 
> Bod **pole =  (Bod **) new Bod[3][3];


Dobra rada: v C++ pretypovani (obzvlast tohle, co funguje jako reinterpret 
cast) potrebujes minimalne. Predpokladam, ze bez nej ti kompilator brblal, co?
To je proto, ze Bod** sice funguje jako dvourozmerne pole, ale jine nez 
Bod[3][3]. To prvni je pole poli (tj. mas jednorozmerne pole ukazatelu na 
jednorozmerne pole), to druhe je opravdove 2d pole.
Takze ty chces asi tohle:

Bod (*pole)[3] = new Bod[3][3];

a o par radku vys:
void napln(Bod pole[3][3])

 
> // pole 3x3 predame a naplnime > napln(pole);
> 
> 
> // pole vytiskneme
> for (int i = 0; i<3; i++)
> {
>    for (int j = 0; j<3; j++)
>    {
>       cout << pole[i][j].x << endl << pole[i][j].y << endl;
>       cout << "-----------" << endl;
>    }
> 
> }
> 
> }
> 
> dammie 
--------------------------------------------------------------------/
|       ICQ 20529980                               Neuromancer       |
|              Take me far away, where the dragons fly,              |
/------------ leave me to my dreams, or just let me die. ------------

Search the boards