Indice
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 <math.h>
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”