to KIIV: jj. Bohuzel pole v C++ si s sebou nenese informaci o sve velikosti jako v Jave. Co se da delat
Příspěvky odeslané z IP adresy 82.99.175.–
to KIIV: jasny mas pravdu. Zkousel sem to a opravdu to funguje.
Nicméně způsob arg_bad[i*rozmer + j] neni zrovna moc elegantni.
Takze to nakonec udělam asi ještě trochu jinak. Kazdopadne diky moc za objasnění;-)
void kontrola() {
k=1;
for(k=1;k<n;k++){
for(i=0;i<n-1;i++){ chyba je tady kdyz i = k pak pole[i] = pole[k] to musis osetrit
if (pole[i]==pole[k]){
n--;
for(c=i;c<n;c++){
pole[c]=pole[c+1];
}
i=i-1;
}}}}
/*
Zdravím,
mám dotaz, není mi jasné proč nemohu předat funkci dvojrozměrné pole
jako parametr, které nebylo dynamicky alokované. Uvedu to na příkladu.
Respektive ono asi mohu, ale nejspíš musím vyplnit velikosti, což mi ale moc
nevyhovuje. Neví někdo náhodou zda by to šlo nějak udělat, aniž bych ho musel
alokovat dynamicky a zároveň neuvádět jeho velikosti?
*/
void fce_ok (int **arg_ok){}
void fce_bad_arg(int arg_bad[ ][ ]){}
int main (int argc, char * argv[])
{
const int SIZE = 2;
int arg_bad[SIZE ][SIZE ];
int ** arg_ok = new int*[ SIZE ];
for (int x= 0; x < SIZE; x++)
arg_ok [ x ] = new int [ SIZE ];
fce_ok( arg_ok );
fce_bad_arg (arg_bad); // zde je chyba
return 0;
}