matematykaszkolna.pl
zwracanie tablicy c++: c++ Funkcja przyjmująca kilka wartości a nastpnie zwracająca tablice Niech funkcja przyjmie trzy wartości a, b, c. W funkcji tworzy się tablica, której elementami są a, b, c. Następnie funkcja zwraca tą tablice. Jak taką funkcje napisać?
16 sty 15:12
Kamil: załóżmy że a,b,c są całkowite. int* zwroc(int a, int b, int c){ int tab[3]; tab[0]=a; tab[1]=b; tab[2]=c; return tab; }
16 sty 15:18
c++: dziękuję! a jak teraz korzystać z tej tablicy? np. w funkcji main żeby wpisać do tablicy to co ta funkcja zwróciła int tablica[3] = zwroc(1,2,3)
16 sty 16:27
c++: jakby jednak ktoś chciał odpowiedzieć to podbijam
18 sty 09:55
jc: To tak nie działa. 1. Możesz do funkcji przekazać adres tablicy, a funkcja wypełni odpowiednio tablicę. void f(int tab[]){ tab[0]=... ; tab[1]=... ; tab[2]=... ; } 2. Możesz przekazać funkcji 3 adresy/referencje (to prawie to samo co rozwiązanie 1). 3. Możesz zdefiniować odpowiednią klasę lub strukturę zawierającą trzy pola. Wtedy funkcja będzie mogła przekazać 3 wartości naraz. 4. Możesz wykorzystać już zdefiniowaną klasę (poszukaj sobie).
18 sty 10:07
Dziadek Mróz: #include <iostream> int *fun1(int a, int b, int c) { static int tab[3]; tab[0] = a; tab[1] = b; tab[2] = c; return tab; } int *fun2(int a, int b, int c) { int *tab = new int[3]; tab[0] = a; tab[1] = b; tab[2] = c; return tab; } int main() { int *tab1 = fun1(1, 2, 3); for (int i=0; i<3; i++) { std::cout << " " << *(tab1+i); } std::cout << std::endl; int *tab2 = fun2(4, 5, 6); for (int i=0; i<3; i++) { std::cout << " " << *(tab2+i); } std::cout << std::endl; // delete tab1; // bo tab1 nie bylo tworzone dynamicznie tylko statycznie delete tab2; return 0; } C++ nie zezwala zwracać pamięci lokalnych zmiennych, więc mamy tu static, druga wersja to dynamiczna tablica i delete na końcu
18 sty 15:20