Puchacz1 Opublikowano 18 Marca 2011 Zgłoś Opublikowano 18 Marca 2011 a więc mam taką funkcję i potrzebuję utworzoną w niej tablice 2 wymiarową zwrócić (zwrócić adres na jej pierwszy element??). I robię to chyba dobrze ale nie potrafię tego później wywołać w funkcji wypisz3d() int *wyniki(int rozmiar, int tab1, int tab2, int tab3){ int ** tab = new int *[rozmiar]; for(int i=0; i<rozmiar; ++i) { tab[i] = new int[rozmiar/2]; } for(int i=0; i<rozmiar; ++i) { for(int j=0; j<3; ++j) { if(j==0) { tab[i][j] = tab1; } else if(j==1) { tab[i][j] = tab2; } else { tab[i][j] = tab3; } } } return tab[0];}void wypisz3d(int **tab, int rozmiar){ for(int i=0;i<rozmiar;++i) { for(int j=0;j<3;++j) { cout << tab[i][j]; } cout << "" << endl; }}tutaj tak próbuję to wywołać jednak mi nie wychodzi: int main(){ int *tab3d = wyniki(6, 1, 2, 3); wypisz3d(tab3d[0], 6); return true;}kompilator wypluwa : invalid conversion from `int` to `int**` Powiedzcie jak odwołać się prawidłowo do takiej tablicy. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Adriano321 Opublikowano 18 Marca 2011 Zgłoś Opublikowano 18 Marca 2011 Zmień: Dodaj wskaźnik int **wyniki(int rozmiar, int tab1, int tab2, int tab3)Zwróć wskaźnik na wskaźnik pierwszego wiersza, a nie tylko pierwszy wiersz return tab;a tu zmień tak, żeby wszystko działało int **tab3d = wyniki(6, 1, 2, 3); wypisz3d(tab3d, 6); Nie rozumiem tylko tego, najpierw robisz sobie tablice rozmiar na rozmiar/2 a później "for(int j=0; j<3; ++j)" korzystasz tylko z 3 wartości? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Puchacz1 Opublikowano 18 Marca 2011 Zgłoś Opublikowano 18 Marca 2011 Działa, dzięki. Z tym rozmiarem to było tak, że trochę zmieniałem koncepcję w trakcie pisania i tak zostało... :). Ale już poprawiłem. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...