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.
Funkcja może zwrócić tylko jedną wartość na raz. Możesz jednak wykorzystać tablice albo jakąś kolekcje.
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.
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.
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."?
Może coś takiego jak tutaj: https://www.quora.com/How-can-I-make-my-function-find-the-roots-of-the-quadratic-equation-in-C++
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
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 (:
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.
Swoją drogą pamiętaj, że rozwiązanie z deltą jest dość niedokładne, użyj raczej wzorów Viete'a.