Questa è una vecchia versione del documento!
−Indice
Esercitazione 3
Oggi dovremo di nuovo usare funzioni sui reali.
Ma il C non ha operatori nativi del linguggio per queste operazioni, come la radice quadrata, l'elevamento a potenza o l'arrotondamento.
Per effettuare questa operazione si fa ricorso a funzioni della libreria matematica dichiarata con
#include <math.h>
che realizza le funzioni matematiche più comuni (assicuratevi di avere l'opzione -lm al momento della compilazione come ultima opzione):
gcc nome.c -o nome -lm
Alcune funzioni matematiche utili della libreria <math.h>:
double floor(double x)
il più grande intero non maggiore di x (per numeri maggiori di 0, la parte intera di x)
double ceil(double x)
il più piccolo intero non minore di x (per numeri maggiori di 0, la parte intera +1 di x)
double pow(double x, double y)
x elevato alla y
double sqrt(double x)
radice quadrata di x (vedere http://it.wikipedia.org/wiki/Math.h per ulteriori funzioni e dettagli)
Gli esercizi di oggi vanno risolti usando solamente costrutti iterativi. Per chi sapesse come usare gli array, questi non vanno usati per risolvere gli esercizi
Nella propria home directory creare una sotto directory chiamata es03, in cui metteremo tutti i file C di oggi.
Esercizio 1
Scrivere il programma calcolatrice che legge un valore di tipo double, uno di tipo char e poi ancora uno di tipo double. Se il carattere letto è uno dei quattro segni di operazioni aritmetiche (+, -, *, /) il programma esegue l'operazione sui due valori e stampa il risultato. Altrimenti stampa un messaggio di errore. Stampare i risultati con al max 2 cifre decimali.
Esercizio 2
Nella morra due giocatori si sfidano scegliendo un simbolo ciascuno tra sasso, forbici e carta: due simboli uguali pareggiano, mentre il sasso batte le forbici, le forbici battono la carta, e la carta batte il sasso.
Scrivere il programma morra che gestisce una sfida tra PC e utente:
- (i) generando un numero casuale da 1 a 3 così definiti:
- 1: sasso,
- 2: forbici,
- 3: carta (utilizzare il costrutto #define per rendere leggibile l'associazione tra il numero e il simbolo)
- (ii) leggendo un carattere ('s': sasso, 'f': forbici, 'c': carta)
- (iii) stampando l'esito del confronto.
Se l'utente immette un carattere diverso da 's', 'f' e 'c' allora perde comunque.
Esercizio 3
Scrivere un programma che esegue istruzioni for per stampare le seguenti serie di numeri:
- (i) 1, 2, 3, 4, 5, 6, 7
- (ii) 3, 8, 13, 18, 23
- (iii) 20, 14, 8, 2, -4, -10
- (iv) 19, 27, 35, 43, 51
Esercizio 4
Modificare il programma precedente in modo da usare solo istruzioni while per i cicli
Esercizio 5
Scrivere un programma che calcoli e visualizzi la somma degli interi pari da 2 a 1000 (estremi compresi)
Esercizio 6
Scrivere un programma che chieda all'utente di inserire una sequenza di interi maggiori di 0 (terminata quando l'utente inserisce uno zero, che non fa parte della sequenza). Calcolare e stampare la somma e la media dei valori inseriti.
Esercizio 7
Scrivere un programma che chieda all'utente di inserire una sequenza di interi maggiori di 0 (terminata quando l'utente inserisce uno zero, che non fa parte della sequenza). Stampare il minimo e il massimo della sequenza, il numero di occorrenze del minimo e il numero di occorrenze del massimo.
Esercizio 8
Scrivere un programma rettangolo che legge due interi positivi A e B e quindi stampa un rettangolo di dimensioni AxB usando il carattere '*'. Esempio di rettangolo 5*3:
*****
*****
*****
Esercizio 9
Scrivere un programma isoscele che chieda all'utente un intero n e stampi un triangolo isoscele di asterischi, di altezza lunga n e base lunga 2n-1. (Se il valore letto è negativo si consideri il suo valore assoluto).
Esempio di interazione con il programma:
Inserisci l'altezza: 6 * *** ***** ******* ********* ***********
Suggerimento: per allineare correttamente le righe, stampare su ogni riga il giusto numero di spazi prima degli asterischi