logo Thecsea.it



Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License



scolastica » esercizi » terza superiore » linguaggio c

Testo dell'esercizio

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

mostra soluzione

/*
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");
	}
}

Testi Consigliati:

Il linguaggio C. Principi di programmazione e manuale di riferimento. Ediz. MyLab. Con Contenuto digitale per download e accesso on line
C guida alla programmazione: Conoscere lo standard C11 dalle basi del linguaggio alle direttive del preprocessore (Programmare con C Vol. 1)
Programmazione in C

torna



Copyright © 2004-2024 thecsea.it (Claudio Cardinale - [email protected])! Tutti i diritti riservati. - contattaci