Implementare funzione: esempio

nirvana2
Ciao devo scrivere questa funzione in C++:
// return value is true if and only if the equation a*x = b has a solution x. If the return value is true, s is a solution, s satisfies a*s=b

bool solve_linear_equation (double a, double b, double& s)

Io ho pensato a questo codice (però non mi torna una cosa):

bool solve_linear_equation (double a, double b, double& s)
{
if (a == 0 || s!=b/a) return false;
else if (a==0 & b==0) return true;
else return true;


Quello che non funziona è la condizione 0*x=0 che funziona per ogni x (quindi sarebbe l'ELSE IF nel codice, infatti mi dà come return uno 0 (false) e non l'1 (true)), il resto ho provato a compilare e lo fa in modo corretto.
È la condizione nell'else if il problema?
Grazie a chi risponde.

Risposte
_Tipper
Il problema è che l'else if non viene mai eseguito, dato che la condizione

a==0 && b==0

è contenuta nella condizione

a == 0 || s!=b/a

Prova a modificare la condizione del primo if in questo modo

if ((a == 0 && b!=0) || s!=b/a)

Detto questo mi torna poco la scrittura s!=b/a. Non dovrebbe essere *s!=b/a, dato che alla funzione viene passato l'indirizzo di s?

nirvana2
Grazie dopo provo, non sono ferrato in queste cose, ma ci provo ugualmente.
Per quanto riguarda la variabile s. Il tuo simbolo * sarebbe il puntatore? Però s è di tipo reference (&). Quindi penso si scriva semplicemente s.

_Tipper
Per quanto riguarda l's hai ragione, mi sono confuso io. :roll: Abbi pazienza...

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.