Data la parabola y=ax^2+bc+c, definire tre funzioni per calcolarne i punti significativi: vertice, fuoco, intersezioni con gli assi. le tre funzioni ricevono come parametri i coefficienti a,b,c e restituiscono il valore calcolato
/*
CLAUDIO CARIDNALE 3AI
Data la parabola y=ax^2+bc+c, definire tre funzioni per calcolarne i punti significativi: vertice, fuoco, intersezioni con gli assi. le tre funzioni ricevono come parametri i coefficienti a,b,c e restituiscono il valore calcolato
*/
#include<stdio.h>
#include<math.h>
void vertice(float a, float b, float c);
void fuoco(float a, float b, float c);
void intersezioni(float a, float b, float c);
int main(){
//dichiarazioni
float a,b,c;
//acquisizione dati
printf("inserire a : ");
scanf("%f",&a);
printf("inserire b : ");
scanf("%f",&b);
printf("inserire c : ");
scanf("%f",&c);
//chiamate di funzioni
//funzione vertice
vertice(a,b,c);
//funzione fuoco
fuoco(a,b,c);
//funzione intersezioni
intersezioni(a,b,c);
}
//funzioni
//funzione vertice
void vertice(float a, float b, float c){
if(a)
printf("V(%f;%f)\n",-b/(2*a),-(b*b-4*a*c)/(4*a));
else
printf("il vertice non può essere calcolato perche` a = 0 e quindi la parabola non esiste\n");
}
//funzione fuoco
void fuoco(float a, float b, float c){
if(a)
printf("F(%f;%f)\n",-b/(2*a),(1-(b*b-4*a*c))/(4*a));
else
printf("il fuoco non può essere calcolato perche` a = 0 e quindi la parabola non esiste\n");
}
//funzione intersezione
void intersezioni(float a, float b, float c){
float soluzione1,soluzione2,delta;
//delta
if ((int)b%2 == 0 ){
delta = (b/2.0*b/2.0) - (a * c);
}else{
delta = (b*b) - (4 * a * c);
}
//controllo su a
if (a != 0){
//controllo sul delta
if(delta>0){
//istruzioni in caso di delta > 0
if ((int)b%2 == 0 ){
soluzione1 = (-b/2.0 - sqrt(delta))/(a);
soluzione2 = (-b/2.0 + sqrt(delta))/(a);
}else{
soluzione1 = (-b - sqrt(delta))/(2.0*a);
soluzione2 = (-b + sqrt(delta))/(2.0*a);
}
printf("Il delta è : %f \n", delta);
printf("x1 : %f \n", soluzione1);
printf("x2 : %f \n", soluzione2);
}else if (delta==0){
//istruzioni in caso di delta = 0
if ((int)b%2 == 0 ){
soluzione1 = soluzione2 = (-b/2.0+sqrt(delta))/a;
}else{
soluzione1 = soluzione2 = (-b+sqrt(delta))/2.0*a;
}
printf ("le due x sono coincidenti perche' delta = 0 quindi\nx: %f\n",soluzione1);
}else{
//istruzioni in caso delta < 0
printf("la parabola non ha nessun punto in comune con l'asse delle x\n");
}
//istruzioni in caso di a = 0
}else{
//istruzioni in caso di b <> 0
if (b!=0){
soluzione1 = -c/b;
printf("e` una retta, x = %f\n",soluzione1);
//istruzioni in caso di b = 0
}else
printf("e` una retta parallela all'asse x\n");
}
}