Zwracanie przez funkcje dwóch parametrów przez referencje.

0

Witam, czy możliwe jest, aby do funkcji przekazać 3 parametry poprzez wartość, a funkcja ta miałaby zwracać dwie wartości przez referencje np &x1, &x2? Jeżeli tak prosiłbym o wskazówki.

0

Funkcja może zwrócić tylko jedną wartość na raz. Możesz jednak wykorzystać tablice albo jakąś kolekcje.

0

Generalnie chodzi o program liczący np. funkcję kwadratową. Tak myślę, jeżeli do funkcji przekazałbym parametry a, b, c (jako wartość) oraz adresy zmiennych x1 i x2 to chyba w tym momencie funkcja mogłaby zwracać obydwie wartości?

To, że zależy mi na zwracaniu wartości poprzez referencję jest z góry narzucone.

0

Funkcja może przypisać do tych zmiennych jakieś wartości (jeśli przekażesz te zmienne przez referencję), ale zwrócić możesz tylko jedną wartość poprzez return.

0

Więc co byłoby najlepszym rozwiązaniem dla zadania o treści: "napisanie funkcji obliczającej pierwiastki funkcji kwadratowej, która przyjmuje 3 parametry a, b, c oraz zwraca w parametrach dwie referencje &x1 oraz &x2."?

4

Możesz zrobić funkcję
void solve (T a, T b, T c, T &x1, T &x2)
która rozwiązanie (x1, x2) wpisze wprost do podanych jako argumenty wywołania funkcji zmiennych. Ale to głupie - mądrzejszym rozwiązaniem byłoby zwrócenie takiego typu:

struct solution { T x1, x2; };

zobacz tutaj: http://ideone.com/4jfAYW

0

Można też zwrócić std::pair, ale rozwiązanie @pingwindyktator'a jest czytelniejsze. Lepsze będzie ze zwracaniem struktury bo kompilator i tak pewnie zrobi RVO, a jest to czytelniejsze niż 5 argumentów (:

0

Ja bym zrobił funkcję

int solve (T a, T b, T c, T &x1, T &x2)

która zwraca ilość rozwiązań (rzeczywistych) równania.

0

Swoją drogą pamiętaj, że rozwiązanie z deltą jest dość niedokładne, użyj raczej wzorów Viete'a.

1 użytkowników online, w tym zalogowanych: 0, gości: 1