Implementare funzione: esempio
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):
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.
// 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
Il problema è che l'else if non viene mai eseguito, dato che la condizione
è contenuta nella condizione
Prova a modificare la condizione del primo if in questo modo
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?
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?
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.
Per quanto riguarda la variabile s. Il tuo simbolo * sarebbe il puntatore? Però s è di tipo reference (&). Quindi penso si scriva semplicemente s.
Per quanto riguarda l's hai ragione, mi sono confuso io.
Abbi pazienza...
