Ciao a tutti, mi è stato dato il seguente problema da risolvere: Dato un array v di numeri reali e un numero reale x, scrivere
una funzione che determina se esistono due elementi distinti in v la
cui somma e` x. Nel programma principale stampare eventulmente tali
elementi.
Il prototipo della funzione e`:
int sommaX(double v[], int dim, int x, int *y, int *z)
[La soluzione migliore non usa due cicli annidati.]
Ovviamente risolverlo diventa molto facile tramite i due cicli annidati, ma mi interessava proprio trovare la soluzione migliore Io ho pensato a questa e vorrei sapere il vostro parere a riguardo. Nota: sort è una funzione già scritta e funzionante che non fa altro che ordinare in modo decrescente l'array
codice:int sommaX (double v[], int dim, double x, double *y, double *z) { int inf = 0, sup = dim - 1; sort (v,dim); while (inf <= sup) { if (v[inf] + v[sup] == x) { *y = v[inf]; *z = v[sup]; return 1; } else { if (v[inf] + v[sup] < x) sup--; else inf++; } } return 0; }