/**********************copyrigth (c) claudio cardinale 2009 - tutti i diritti riservati*****************/
//compilare con gcc -lm -o equazione_secondo_grado equazione_secondo_grado.c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
//dichiarazione variabili
int ret;
float soluzione1, soluzione2, delta = 0;
int num1 = 0, num2 = 0, num3 = 0;
//richiesta dati
printf("Inserisci a: ");
scanf("%d", &num1);
printf("Inserisci b: ");
scanf("%d", &num2);
printf("Inserisci c: ");
scanf("%d", &num3);
//calcolo del delta
if (num2%2 == 0 ){
delta = (num2/2*num2/2) - (num1 * num3);
}else{
delta = (num2*num2) - (4 * num1 * num3);
}
//controllo su a
if (num1 != 0){
//controllo sul delta
if(delta>0){
//istruzioni in caso di delta > 0
if (num2%2 == 0 ){
soluzione1 = (-num2/2 - sqrt(delta))/(num1);
soluzione2 = (-num2/2 + sqrt(delta))/(num1);
}else{
soluzione1 = (-num2 - sqrt(delta))/(2*num1);
soluzione2 = (-num2 + sqrt(delta))/(2*num1);
}
printf("Il delta è circa: %.3f \n", delta);
printf("La prima soluzione dei due numeri e' la seguente: %f \n", soluzione1);
printf("La seconda soluzione dei due numeri e' la seguente: %f \n", soluzione2);
}else if (delta==0){
//istruzioni in caso di delta = 0
if (num2%2 == 0 ){
soluzione1 = soluzione2 = (-num2/2+sqrt(delta))/num1;
}else{
soluzione1 = soluzione2 = (-num2+sqrt(delta))/2*num1;
}
printf ("le soluzioni sono coincidenti perche' delta = 0 quindi\nx: %f\n",soluzione1);
}else{
//istruzioni in caso delta < 0
printf("l'equazione e' inpossibile in R\n");
}
//istruzioni in caso di a = 0
}else{
//istruzioni in caso di b <> 0
if (num2!=0){
soluzione1 = -num3/num2;
printf("equazione di primo grado x = %f\n",soluzione1);
//istruzioni in caso di b = 0
}else
printf("l'equazione e` di primo grado ed impossibile in R\n");
}
ret = execve("./equazione_secondo_grado",0,0);
return 0;
}
/**********************copyrigth (c) claudio cardinale 2009 - tutti i diritti riservati*****************/