//------------------------------------------------- // Jordi Binefa i Martínez // dubtes@excite.com // http://members.juara.com/asi //------------------------------------------------- //Escriu el programa IF5.CPP per a resoldre les arrels //d’una equació quadràtica. L’equació quadràtica és : // A*x^2 + B*x + C = 0 // // Les arrels de l’equació quadràtica són : // // Root1 = ( -B + sqrt( B^2 – 4*A*C ) ) / ( 2* A) // // Root2 = ( -B - sqrt( B^2 – 4*A*C ) ) / ( 2* A) // // Si el terme de l’arrel quadrada és negatiu, les //arrels són complexes. Si el terme de l’arrel quadrada //és zero, les dos arrels són la mateixa i són iguals a : // -B / (2*A) #include #include #define REAL 1 #define COMPLEX 0 void preguntaValors(double *a, double *b, double *c, char *aa, char *bb, char *cc){ do{ cout << "Diguem el valor de " << *aa << " : "; cin >> *a; if(*a == 0.0) cout << "\n" << *aa << " té que ésser diferent de zero.\n"; }while(*a == 0.0); cout << "Diguem el valor de " << *bb << " : "; cin >> *b; cout << "Diguem el valor de " << *cc << " : "; cin >> *c; } int dinsArrel(double *res, double a, double b, double c){ *res = b*b - 4.0*a*c; if (*res < 0.0) return COMPLEX; else return REAL; } void main(){ double x,y,z,delta; preguntaValors(&x,&y,&z,"A","B","C"); if( dinsArrel(&delta,x,y,z) ) if(delta){ cout << "\nx1 = " << (-y+sqrt(delta))/(2.0*x); cout << "\nx2 = " << (-y-sqrt(delta))/(2.0*x); }else cout << "\nx1 = x2 =" << -y/(2.0*x); else cout << "\nEl resultat és complex\n" << -y/(2.0*x) << " + j*" << sqrt(-delta)/(2.0*x) << "\n" << -y/(2.0*x) << " - j*" << sqrt(-delta)/(2.0*x); cout << "\n\n"; }