Risoluzione equazione di secondo grado

di il
1 risposte

Risoluzione equazione di secondo grado

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{ 
    double a,b,c,x1,x2,d,sd;
    // d ==> determinante
  // sd ==> radice determinante 
    printf("inserisci il coefficente di grado 2(ax2)\n");
    scanf("%lf",&a);
    printf("inserisci il coefficente di grado 1(bx)\n");
    scanf("%lf",&b);
    printf("inserisci il coefficente di grado 0(c)\n");
    scanf("%lf",&c);
    d=( pow(b,2)-4*a*c );
    printf("il determinante e' => %.2f\n",d);
    if(d>=0){  
              if(d==0)
              {
                  x1=(-b)/(2*a);
                  x1=x2;
                  printf("x1=%f\n",x1);
                  printf("x2=%f\n",x2);
              }
              else 
              {
                    sd=sqrt(d);
                    x1=(-b +sd)/(2*a);  
                    x2=(-b -sd)/(2*a);
                    printf("x1=%f\n",x1);
                    printf("x2=%f\n",x2);      
              }
            }
    
  system("PAUSE");	
  return 0;
}
ragazzi ho fatto questo programmino.... volevo sapere se posso aggiungere altro e se si come !!
poi lo volevo fare suddiviso in funzione!! come posso fare??

1 Risposte

  • Re: Risoluzione equazione di secondo grado

    Anche io avevo svolto questo esercizio addietro e credo che tu possa ottimizzare giusto ristrutturando l'if in modo più semplice e eliminando l'inutile variabile sd. Ti posto come era il mio codice:
    
    if ( delta > 0 ) {
    		x1 = (-b + sqrt(delta))/2*a;
    		x2 = (-b - sqrt(delta))/2*a;
    		printf("Le soluzioni dell'equazione sono:\n%.2f e %.2f", x1, x2);
    	} else if ( delta == 0) {             // Meglio che degli if annidiati
    		x1 = -b / 2*a;
    		printf("La soluzione dell'equazione è:\n%.2f", x1);
    	} else {
    		printf("L'equazione non ha soluzioni reali.");
    	}
    
    
Devi accedere o registrarti per scrivere nel forum
1 risposte