2015 – 2

È dato il seguente programma:

#include 
#include 
int main() 
{
   int a,b,c,delta;
   float x1,x2;
   a=1; 
   b=1; 
   c=-2; 
   delta=b*b-4*a*c;
   x1=(-b-sqrt(delta))/2;
   x2=(-b+sqrt(delta))/2;
   if(a*x1*x1+b*x1+c == 0)
      printf("La sol.1 è corretta, ");
   else
      printf("La sol.1 è sbagliata, ");
   if(a*x2*x2+b*x2+c == 0)
      printf("la sol.2 è corretta.\n");
   else
      printf("la sol.2 è sbagliata.\n");
   return 0;
}

Cosa viene visualizzato a video dall’esecuzione del programma?

  1. La sol.1 è sbagliata, la sol.2 è sbagliata.
  2. La sol.1 è corretta, la sol.2 è sbagliata.
  3. La sol.1 è sbagliata, la sol.2 è corretta.
  4. La sol.1 è corretta, la sol.2 è corretta.

Soluzione: d (la sol.1 è corretta, la sol.2 è corretta).


Il programma risolve l’equazione di secondo grado con a=1, b=1, c=-2.

Le formule sono errate (manca a al denominatore) ma le soluzioni, x1=-2, x2=1, sono esatte (perché a=1) e di conseguenza superano i controlli…