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.
Esercizio 10
Modificare il programma precedente per stampare un rombo vuoto. Nota: accettare solo numeri dispari come altezza.
Esempio di interazione con il programma:
Inserisci l'altezza (dispari): 8 Inserisci l'altezza (dispari): 9 * * * * * * * * * * * * * * * *
Esercizio 11
Modificare il programma 9 per stampare un triangolo isoscele di altezza lunga n (con n compreso tra 0 e 9 ) e base lunga 2n-1 fatto come sotto.
Se il valore letto è non è compreso tra 0 e 9 si chieda all'utente un nuovo valore finché l'intero immesso non appartenga all'intervallo richiesto.
Esempio di interazione con il programma:
Dammi un numero intero positivo compreso tra 0 e 9: -2 Dammi un numero intero positivo compreso tra 0 e 9: 5 1 212 32123 4321234 543212345
Esercizio 12
Un triangolo rettangolo puo' avere tutti i lati di lunghezza intera.
Un insieme di tre valori interi per i lati di un triangolo rettangolo e' chiamato Tripletta Pitagorica. Questi tre lati devono soddisfare la condizione che la somma del quadrato di due dei lati deve essere uguale al quadrato del terzo.
Scrivere un programma che trovi e stampi tutte le triplette pitagoriche in cui tutti e tre i lati sono minori di 500.
Suggerimento: usare tre for annidati ed eseguire la ricerca in modo esaustivo, cioe' coprendo tutte le possibili triple.