I migliori prodotti

Realizziamo un programma che risolva un’equazione di secondo grado in C.


Equazioni di secondo grado

Innanzitutto partiamo dalla definizione. Un’equazione di secondo grado è un’equazione di grado 2 con, eventualmente, esponenti di grado inferiore.

Un’equazione di secondo grado scritta nella forma canonica è del tipo:

ax2+bx+c=0

Dove

a è il coefficiente del termine di grado 2

b è il coefficiente del termine di grado 1

c è il coefficiente del termine di grado 0, detto anche termine noto


Per risolvere l’equazione occorre conoscere i tre coefficienti. Una volta acquisiti i tre valori occorre calcolare il determinante o delta utilizzando la formula:

b*b-4*a*c;

In base al determinante si verificano queste situazioni:

se il determinante è minore di zero, non esistono soluzioni reali;

se il determinante è uguale a zero, l’equazione ammette due soluzioni reali coincidenti;

se il determinante è maggiore di zero, l’equazione ammette due soluzioni reali distinte;

Inoltre, se il coefficiente a è uguale a zero, chiaramente non ci troveremo più di fronte ad un’equazione di secondo grado ma di primo grado. Dunque ovviamente non si potrà applicare la formula.

Nei casi in cui le soluzioni esistono si ottengono con questa formula:

x1=(-b+sqrt(determinante))/2*a

x2=(-b-sqrt(determinante))/2*a

dove sqrt è la funzione per il calcolo della radice quadrata.

Procedimento dell’algoritmo per la risoluzione delle equazioni di secondo grado

Per risolvere le equazioni di secondo grado in C, si possono creare tante soluzioni.

Ve ne propongo due, una con l’uso delle funzioni o procedure e l’altra senza.

Esempio 1: equazione di secondo grado senza funzioni create in C

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main() {
   float a,b,c;
   double x1,x2,d;

   printf("coefficiente a:\t");
   scanf("%f", &a);
   printf("\ncoefficiente b:\t");
   scanf("%f", &b);
   printf("\ncoefficiente c:\t");
   scanf("%f", &c);

   if (a==0) {
	if((b==0)&&(c==0))
	    printf("\nequazione indeterminata");
	else if(b==0)
	    printf("\nequazione impossibile");
	else {
	   printf("l'equazione e' di primo grado\n");
	   x1=-c/b;
	   printf("\n x= %lf", x1);
	}
  }
  else {
	d=b*b-4*a*c; 
	printf("\nil determinante e' %5.3lf ",d);
	if(d>0) {
	    x1=(-b-sqrt(d))/(2*a);
	    x2=(-b+sqrt(d))/(2*a);
	    printf("\nDue soluzioni reali distinte x1= %5.3lf e x2= %5.3lf ",x1,x2);
	  }
	  else if(d==0) {
	    x1=(-b)/(2*a); 
	    printf("\nDue soluzioni reali coincidenti x1 e x2 uguali a %5.3lf ",x1);
	 }
	 else printf("\nNon esistono soluzioni reali\n");
  }
system("pause");
return 0;
}

Chiaramente si potrebbero aggiungere degli accorgimenti al programma ad esempio considerando le equazioni di secondo grado monomie, ecc..

Esempio 1: equazione di secondo grado con l’uso di funzioni o procedure in C

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

float a, b, c;
double x1,x2,d;

void coefficienti() 
{
   printf("coefficiente a:\t");
   scanf("%f", &a);
   printf("\ncoefficiente b:\t");
   scanf("%f", &b);
   printf("\ncoefficiente c:\t");
   scanf("%f", &c);
}

void determinante()
{
   d=b*b-4*a*c;
}

void soluzioni()
{ 
   if(d<0)
      printf("\nnon possono esserci soluzioni reali");
   else if(d==0) {
      x1=(-b)/(2*a);
      printf("Due soluzioni reali coincidenti x1 e x2 uguali a %5.3lf ",x1);
  }
   else
   {
      x1=(-b-sqrt(d))/(2*a);
      x2=(-b+sqrt(d))/(2*a);
      printf("Due soluzioni reali distinte x1= %5.3lf e x2= %5.3lf ",x1,x2);
   }

}

void equazione_primo()
{
    if((b==0)&&(c==0))
	printf("\nequazione indeterminata");
    else if(b==0)
	printf("\nequazione impossibile");
    else {
	x1=-c/b;
	printf("\n x= %5.3f", x1);
	 }
}

main()
{
   coefficienti();
   if(a==0) 
       equazione_primo();
   else {
        determinante();
        soluzioni();
    }
system("pause");	
}

Alcuni link utili:

Funzioni in C

Funzione strlen() in C

Funzione gets() e puts() in C

Funzioni getchar() e putchar in C

Uso della libreria string.h

Concatenare due stringhe in C

Array di caratteri in C

Ricerca di un elemento in una matrice

Prodotto tra matrici in C

Somma tra due matrici in C

Array multidimensionali

Tavola pitagorica in C

Array o vettori in linguaggio C

Media dei numeri in un array in linguaggio C