====== Esercitazione 2 ======
Oggi dovremo usare funzioni sui reali.
Ma il C non ha operatori nativi del linguggio per la radice quadrata
o l'elevamento a potenza.
Per effettuare questa operazione si fa ricorso a funzioni della libreria
matematica dichiarata con
#include
che esporta le funzioni
matematiche più comuni (e assicuratevi di avere l'opzione -lm al momento della
compilazione come ultima opzione):
gcc nome.c -o nome -lm
In particolare useremo:
double sqrt(double x);
double pow(double x, double y);
La prima restituisce la radice quadrata di x.
La seconda restituisce x elevato alla y.
In quest'ultimo caso, poichè y può essere un qualunque numero reale (nei
limiti di rappresentabilità) la stessa funzione permette di calcolare
anche le radici reali di x.
E' ovvio, nel caso in cui il valore di y non corrisponda ad un numero intero,
bisogna fare molta attenzione al segno di x.
Nella propria home directory creare una sotto directory chiamata es02, in cui
metteremo tutti i file C di oggi.
===== Esercizio 1 =====
Scrivere un programma tipo_elementare.c che, per ciascun tipo elementare già
visto a lezione, stampa una riga contenente il nome del tipo e la dimensione, in
byte, di una variabile di quel tipo.
===== Esercizio 2 =====
Modificare il programma area_rettangolo dato la scorsa volta per calcolare e
stampare anche l'area di un quadrato avente lo stesso perimetro ed il perimetro
di un quadrato avente la stessa area. Usare la funzione sqrt per la radice quadrata
===== Esercizio 3 =====
Scrivere il programma ordina.c che legge tre interi sulla stessa riga e li
stampa in
ordine decrescente facendo il minimo numero di confronti possibile. Stampare
inoltre la media dei tre numeri.
===== Esercizio 4 =====
Leggere due numeri e controllare se il primo è multiplo del secondo (vericare
se il resto è nullo).
===== Esercizio 5 =====
Scrivere un programma che, preso un anno in ingresso, calcoli se questo è bisestile oppure no. Un anno è bisestile se è divisibile per 4 ma non per 100 e,
qualora sia l'anno d'inizio di un secolo, solo se è divisibile per 400.
===== Esercizio 6 =====
Scrivere un programma che legga dall'utente 3 voti in trentesimi (controllare
che
siano voti validi, ovvero compresi tra 18 e 30). Si stampi la media in
trentesimi.
===== Esercizio 7 =====
Scrivere il programma multiplo che legga un intero e determini se è multiplo di
3, di 5, di 7 o una combinazione dei tre. Esempio di interazione col programma:
Dammi un numero: 15 Multiplo di 3 e di 5
Dammi un numero: 105 Multiplo di 3, di 5 e di 7
Dammi un numero: 17 Non multiplo di 3, di 5 o di 7.
===== Esercizio 8 =====
Scrivere il programma tipo_triangolo che legge tre valori interi che
rappresentano le lunghezze dei lati di un triangolo, stabilisce se sono dati
corretti (la somma di ogni due lati non minore dell'altro lato) e, in caso
affermativo, se si tratta di un triangolo scaleno, isoscele o equilatero,
stampando un opportuno messaggio.
Eseguire il numero minimo di confronti sia per la correttezza dei dati che per
il tipo di triangolo.
===== Esercizio 9 =====
Scrivere il programma voto_giudizio che legge un valore intero v che
rappresenta
un voto e a seconda del valore letto stampa il giudizio corrispondente come
specificato dalla tabella riportata sotto:
*30 < v "Valore illecito!"
*24 < v < = 30 "Ottimo"
*21 < v < = 24 "Buono"
*18 < = v <= 21 "Sufficiente"
*0 < = v < 18 "Insufficiente"
*v < 0 "Valore illecito!"
===== Esercizio 10 =====
Scrivere il programma tipo_bevanda che legge un valore in virgola mobile g
che rappresenta la gradazione alcolica di una bevanda e a seconda del valore
letto
stampa il messaggio della tabella :
*g > 99 "Valore illecito"
*50 < g < = 99 "Roba forte!"
*33.3 < g < = 50 "Superalcolico"
*20 < g < = 33.3 "Alcolico"
*15 < g < = 20 "Vino liquoroso"
*15 < g < = 20 "Vino forte"
*10.5 < g < = 12 "Vino normale"
*0 < g < = 10.5 "Vino leggero"
*g = 0 "Bevanda analcolica"
*g < 0 "Valore illecito"