AVVISO CORSI DI FORMAZIONE SU SOSTEGNO PER DOCENTI

Download Report

Transcript AVVISO CORSI DI FORMAZIONE SU SOSTEGNO PER DOCENTI

Scelte ed alternative 2
1. Classificazione triangolo
Si scriva un programma in linguaggio C che legga da tastiera i valori delle lunghezze dei tre lati di un
triangolo (detti A, B e C), e determini:
1. se il triangolo è equilatero
2. se il triangolo è isoscele
3. se il triangolo è scaleno
4. se il triangolo è rettangolo.
linguaggio di programmazione C
/* File: triangolo.c */ #include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main (void) {
float a, b, c ; /* lati del triangolo */
float quadA, quadB, quadC ; /* quadrati costruiti sui cateti */
/* LEGGI A, B e C */
printf("Immetti A: ");
scanf ("%f", &a);
printf("Immetti B: ");
scanf ("%f", &b);
printf("Immetti C: ");
scanf ("%f", &c);
printf("Verifico le proprieta’ del triangolo di lati: %f, %f, %f\n", a, b, c);
/* CONTROLLA SE E’ UN TRIANGOLO:
­ I LATI DEVONO ESSERE POSITIVI
­ OGNI LATO DEVE ESSERE MINORE DELLA SOMMA DEGLI ALTRI DUECAPITOLO 11. SOLUZIONI: SCELTE ED
ALTERNATIVE
­ OGNI LATO DEVE ESSERE MAGGIORE DELLA DIFFERENZA DEGLI ALTRI DUE */
if(a<=0 || b<=0 || c<=0)
printf("Errore: i lati devono essere positivi\n");
else {
if(a>=b+c || b>=a+c || c>=a+b)
printf("Errore: ogni lato deve essere minore della somma degli altri due\n");
else {
if( (b> c && a <= b­c) || (b<=c && a <= c­b) || (a> c && b <= a­c) ||
(a<=c && b <= c­a) || (a> b && c <= b­a) || (a<=b && c <= a­b) )
/*oppure if ((a <= fabs(b­c)) || (b <=fabs(a­c)) || (c <=fabs(a­b)))*/
printf("Errore: ogni lato deve essere maggiore della differenza degli altri due\n");
else {
/* A QUESTO PUNTO SONO SICURO CHE SIA UN TRIANGOLO!*/
/* VERIFICA SE E’ EQUILATERO (3 LATI UGUALI) */
if(a==b && b==c) {
printf("Il triangolo e’ equilatero\n");
/* IL TRIANGOLO EQUILATERO NON PUO’ ESSERE RETTANGOLO */
printf("Il triangolo non e’ rettangolo\n");
} else {
/* SE IL TRIANGOLO NON E’ EQUILATERO VERIFICA SE E’ ISOSCELE O SCALENO */
printf("Il triangolo non e’ equilatero\n");
/* VERIFICA SE E’ ISOSCELE (2 LATI UGUALI)*/
if(a==b || b==c || a==c)
printf("Il triangolo e’ isoscele\n");
else {
printf("Il triangolo non e’ isoscele\n");
/* IL TRIANGOLO E’ SCALENO POICHE’ NON E’ NE’ EQUILATERO NE’ ISOSCELE */
printf("Il triangolo e’ scaleno\n");
}
/* SE IL NON E’ EQUILATERO PUO’ ESSERE RETTANGOLO verifica se e’ rettangolo
(teorema di Pitagora) calcola il valore dei quadrati costruiti sui cateti */
quadA = a*a;
quadB = b*b;
quadC = c*c;
if(quadA == quadB + quadC)
printf("E’ rettangolo (ipotenusa A)\n");
else {
if(quadB == quadA + quadC)
printf("E’ rettangolo (ipotenusa B)\n");
else {
if( quadC == quadA + quadB)
printf("E’ rettangolo (ipotenusa C)\n");
else
printf("Il triangolo non e’ rettangolo \n");
}
}
}
}
}
}
exit(0);
}
2. Equazioni di primo grado
Data l’equazione ax + b = 0 con a e b inseriti da tastiera, scrivere un programma in linguaggio C per
determinare il valore di x, se esiste, che risolve l’equazione.
linguaggio di programmazione C
/* File: primogrado.c */
#include <stdio.h>
#include <stdlib.h>
int main(void) {
float a, b; /* coefficienti a e b */
float x; /* valore di x che risolve l’equazione */
printf("Risoluzione equazioni di primo grado\n");
printf("Equazione nella forma: ax + b = 0\n");
/* LEGGI a e b */
printf("Immetti coefficiente a: ");
scanf ("%f", &a);
printf("Immetti coefficiente b: ");
scanf ("%f", &b);
/* x VIENE CALCOLATO COME x=­b/a. SI DEVONO VERIFICARE I VALORI DI a E b */
if(a != 0) {
x = ­ b / a;
printf("La soluzione e’ x = %f\n", x);
} else {
/* CASO a==0 */
if(b == 0) {
printf("Equazione indeterminata (ammette infinite soluzioni)\n");
} else {
printf("Equazione impossibile (non ammette soluzioni)\n");
}
}
exit(0);
}
3. Stampa dei mesi
Dato un numero intero tra 1 e 12, che rappresenta il mese corrente, stampare il nome del mese per esteso
(“Gennaio” ... “Dicembre”).
linguaggio di programmazione C
/* File: mesi.c */
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int mese ; /* mese inserito */
/* LEGGI IL NUMERO DEL MESE */
printf("Inserisci il numero del mese: ");
scanf ("%d", &mese);
/* VISUALIZZA IL NOME DEL MESE CORISPONDENTE AL NUMERO INSERITO*/
switch(mese) {
case 1:
printf("Gennaio\n"); break;
case 2:
printf("Febbraio\n"); break;
case 3:
printf("Marzo\n"); break;
case 4:
printf("Aprile\n"); break;
case 5:
printf("Maggio\n"); break;
case 6:
printf("Giugno\n"); break;
case 7:
printf("Luglio\n"); break;
case 8:
printf("Agosto\n"); break;
case 9:
printf("Settembre\n"); break;
case 10:
printf("Ottobre\n"); break;
case 11:
printf("Novembre\n"); break;
case 12:
printf("Dicembre\n"); break;
default:
printf("MESE ERRATO!\n");
}
exit(0);
}
4. Calcolo del massimo
Si scriva un programma in linguaggio C che acquisisca due numeri interi da tastiera e:
1. determini, stampando un messaggio opportuno quale dei due numeri (il primo o il secondo) sia
maggiore
2. stampi il valore di tale numero.
linguaggio di programmazione C
/* File: massimo.c */
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int a, b ; /* numeri inseriti */
/* LEGGI I NUMERI */
printf("Immetti il primo numero: ");
scanf ("%d", &a);
printf("Immetti il secondo numero: ");
scanf ("%d", &b);
/* VERIFICA SE a E’ MAGGIORE DI b */
if (a > b) {
printf("Il primo numero %d e’ maggiore del secondo numero %d\n", a, b);
printf("Il valore massimo e’ %d\n", a);
} else {
/* CASO a <= b */
/* VERIFICA SE b E’ MAGGIORE DI a */
if (a < b) {
printf("Il secondo numero %d e’ maggiore del primo numero %d\n", b, a);
printf("Il valore massimo e’ %d\n", b);
} else
/* CASO a = b */
printf("Il primo numero %d ed il secondo numero %d sono uguali\n", a, b);
}
exit(0);
}