Sei sulla pagina 1di 10

Esercizi per il corso di Programmazione I

Programmi senza IF e cicli


Esercizio 1 Leggere da tastiera il raggio r di una circonferenza, calcolare area
e lunghezza della circonferenza e visualizzare a video i risultati
Esercizio 2 Leggere da tastiera i coecienti a, b, c di un equazione di II grado
ax
2
+bx+c = 0, calcolarne le soluzioni (nellipotesi che il delta sia non negativo)
e visualizzarle a video
Esercizio 3 Leggere da tastiera i coecienti a, b, c, d e i termini noti e, f di un
sistema lineare di due equazioni e due incognite
_
ax + by = e
cx + dy = f
calcolare le soluzioni x, y (nellipotesi che il determinante del sistema ad bc
sia diverso da zero) e visualizzarle a video
Esercizio 4 Leggere da tastiera i valori dellipotenusa e di un cateto di un
triangolo rettangolo, calcola la lunghezza dellaltro cateto, il perimetro e larea
del triangolo e visualizzare a video i risultati
Esercizio 5 Leggere da tastiera il capitale C, il tasso i e il numero di anni t,
calcolare il montante con la capitalizzazione semplice e quello con la capitaliz-
zazione composta
M
s
= C(1 + it), M
c
= C(1 + i)
t
e visualizzare i risultati
Esercizio 6 Leggere da tastiera i tre lati di un triangolo a, b e c, calcolare il
perimetro e larea, questultima con la formula di Erone
S =
_
p(p a)(p b)(p c)
ove p `e il semiperimetro.
Programmi con if/else
Esercizio 7 Estendere lesercizio 2, trattando il caso in cui il delta sia negativo
e visualizzando un messaggio in tal caso
Esercizio 8 Estendere lesercizio 3 trattando il caso in cui il determinante del
sistema sia zero
Esercizio 9 Leggere da tastiera due numeri interi e visualizzare il maggiore tra
i due
1
Esercizio 10 Leggere da tastiera due numeri e visualizzare se i due numeri
sono uguali, o se e maggiore il primo o il secondo
Esercizio 11 Leggere da tastiera le lunghezze dei tre lati di un triangolo e in-
dicare se il triangolo `e equilatero (tre lati uguali), isoscele (due lati uguali e uno
diverso) o scaleno (tre lati diversi)
Esercizio 12 Leggere da tastiera tre numeri interi e visualizzare il maggiore
Esercizio 13 Leggere da tastiera un intero A e dire se lanno A e bisestile (A
divisibile per 4 e non divisibile per 100, oppure divisibile per 400)
Esercizio 14 Leggere da tastiera il reddito I di un individuo, calcolare e visu-
alizzare limposta T secondo la formula
10% per redditi no a 2000 euro
15% per redditi tra 2000 e 3000 euro
20% per redditi tra 3000 e 4500 euro
25% per redditi tra 4500 e 6000 euro
30% per redditi oltre 6000 euro
Programmi con switch
Esercizio 15 Leggere da tastiera un numero tra 0 e 9 e visualizzarlo come
parola in inglese (ad es. inserendo 3 si ottiene three)
Esercizio 16 Leggere da tastiera un numero tra 0 e 99 e visualizzarlo in numeri
romani (ad es. 43 come XLIII)
Esercizio 17 Leggere da tastiera un primo numero reale X, un carattere OP
contenente il simbolo di unoperazione matematica (+, -, *, /) e un secondo
numero reale Y e calcolare X OP Y (cio`e ad esempio se OP `e + calcolare
X + Y , se OP `e calcolare X Y , ecc.)
Esercizio 18 Leggere da tastiera una data (giorno e mese) e controllare se `e
una data valida, visualizzando un messaggio di conferma o di errore (ad esempio
sono date corrette il 23/8, l8/9 o il 13/11, sono invece errate le date 3/13, 31/4
e 30/2)
Esercizio 19 Leggere da tastiera una data dellanno corrente sotto forma di
giorno e mese e calcolare quanti giorni sono trascorsi dal primo gennaio (Sugg.
aggiungere al giorno immesso dallutente il numero di giorni trascorsi tra il
primo del mese e il primo gennaio)
Programmi con while/do while
Esercizio 20 Leggere da tastiera un numero intero assicurandosi che sia pos-
itivo, se invece `e negativo o nullo far ripetere limmissione visualizzando un
messaggio derrore.
2
Esercizio 21 Implementare lalgoritmo di Euclide per calcolare il massimo co-
mun divisore di due numeri interi: partendo dai due numeri iniziali si sostituisca
il pi` u grande con la dierenza tra il pi` u grande e il pi` u piccolo no a quando
non si arriva ad avere due numeri uguali, che conterranno il MCD voluto.
Esercizio 22 Migliorare limplementazione dellalgoritmo di Euclide del MCD:
partendo da due numeri iniziali si sostituisca uno dei due con il resto della
divisione tra lui e laltro no a quando il resto ottenuto non diventa zero, laltro
numero rimasto `e il MCD dei due numeri iniziali.
Esercizio 23 Scrivere un programma che calcola la somma di un insieme il-
limitato di numeri: lutente immette un numero alla volta, alla ne inserisce
zero, il programma si ferma visualizzando il totale
Esercizio 24 Come il programma precedente, calcolare la media dei numeri
immessi
Esercizio 25 Scrivere un programma che legge una serie di numeri interi posi-
tivi fermandosi quando la somma dei numeri immessi supera un valore costante
(ad esempio 100)
Esercizio 26 Come il programma precedente, fermandosi per`o quando il nu-
mero immesso supera la somma dei numeri precedenti
Esercizio 27 Calcolare la radice quadrata di un numero reale R con il metodo
di Newton: si parta con X = R e ad ogni passo si aggiorni X con il valore
1
2
(X +
R
X
) e ci si fermi quando la dierenza tra il vecchio valore di X e il nuovo
non diventi in valore assoluto minore di una certa quantita costante EPS. A
quel punto X conterra il valore approssimato di

R. EPS serve ad indicare
quante cifre esatte si vogliono di

X, ad esempio per avere due cifre si pone
EPS=0.01.
Esercizio 28 Calcolare la costante di Nepero e tramite la formula
e =

n=0
1
n!
sommando per`o solo un numero nito di termini: si aggiunga un addendo per
volta a partire dal primo e si fermi il calcolo quando laddendo da aggiungere
diventa pi` u piccolo di una certa quantita costante.
Programmi con for
Esercizio 29 Leggere da tastiera un numero N e una stringa S e visualizzare
N volte la stringa S
Esercizio 30 Leggere da tastiera un numero intero N e calcolare il fattoriale di
N
3
Esercizio 31 Leggere da tastiera due numeri interi N e K calcolare il coe-
ciente binomiale
_
N
K
_
Esercizio 32 Leggere da tastiera un numero intero n e visualizzare tutti le
coppie di numeri interi che hanno come somma n.
Esercizio 33 Leggere da tastiera un numero intero K compreso tra 1 e 20 e
visualizzare la tabella pitagorica dei numeri tra 1 e K.
Esercizio 34 Leggere da tastiera un numero intero N e successivamente N nu-
meri reali, calcolare a scelta una o pi` u delle seguenti quantit`a
la somma
il prodotto
la media aritmetica

N
i=1
X
i
N
la media geometrica
_
N

i=1
X
i
_
1
N
la media armonica
N

N
i=1
1
X
i
il massimo
il minimo
il campo di variazione (cio`e il massimo meno il minimo)
la varianza
e visualizzare il risultato
Esercizio 35 Leggere da tastiera un numero intero N e successivamente N cop-
pie di numeri reali X, W e calcolare la media dei valori X pesata con i pesi W,
ossia

X
i
W
i

W
i
Esercizio 36 Leggere da tastiera un numero intero K e visualizzare a video il
triangolo di Tartaglia di K righe, cio`e quello che contiene i coecienti binomiali
_
i
j
_
, per i = 0, . . . , k, j = 0, . . . , i.
Esercizio 37 Leggere da tastiera un numero intero n e determinare se `e per-
fetto, cio`e se la somma dei suoi divisori, tranne se stesso, `e uguale a n
4
Programmi con gli array
Esercizio 38 Leggere da tastiera un vettore di N numeri reali e visualizzare il
quadrato di ognuno
Esercizio 39 Leggere da tastiera un vettore di N stringhe e visualizzare il vet-
tore in ordine inverso, cio`e visualizzando prima lultima stringa inserita, poi la
penultima, ecc. no alla prima inserita.
Esercizio 40 Leggere da tastiera un vettore di N numeri reali e calcolare una
o pi` u quantit`a dellesercizio 34.
Esercizio 41 Leggere da tastiera un vettore di N numeri reali e visualizzare le
posizioni dellelemento minimo e dellelemento massimo.
Esercizio 42 Leggere da tastiera un vettore di N numeri reali e visualizzare gli
elementi del vettore che dieriscono in valore assoluto dalla media pi` u di un
valore costante (ad esempio 0.1)
Esercizio 43 Leggere da tastiera un vettore X di N numeri reali e visualizzare
gli elementi del vettore X
i
tali che
|X
i


X|
s

in cui

X e la media di X, s e lo scarto quadratico medio
s =
_

(x
i


X)
2
N
e `e una costante
Esercizio 44 Leggere da tastiera un vettore di N numeri interi e invertirlo
(scambiare il primo con lultimo, il secondo con il penultimo, ecc.)
Esercizio 45 Leggere da tastiera N e riempire un vettore con i primi N numeri
primi
Esercizio 46 Leggere da tastiera un vettore ordinato A di N interi, conte-
nente elementi possibilmente duplicati, e memorizzare in un secondo vettore B
tutti gli elementi di A senza duplicati, inne visualizzare B a video
Esercizio 47 Svolgere lesercizio precedente senza lipotesi che il vettore sia
ordinato.
Esercizio 48 Leggere da tastiera i coecienti p
i
di un polinomio p di grado n
(in totale sono n + 1 numeri) e un valore x e valutare il polinomio p nel punto
x mediante la formula
p(x) =
n

i=0
p
i
x
i
Studiare un modo per evitare di calcolare le potenze di x.
5
Esercizio 49 Partendo dai dati dellesercizio precedente, valutare il polinomio
p

derivata di p mediante la formula


p

(x) =
n

i=1
i p
i
x
i1
Anche in questo caso studiare un modo per evitare di calcolare le potenze di x.
Esercizio 50 Leggere da tastiera due vettori A e B di interi di dimensione n e
memorizzare in un vettore C di dimensione 2n lunione degli elementi dei due
vettori, memorizzando una sola volta gli elementi in comune
Esercizio 51 Leggere da tastiera due vettori A e B di interi di dimensione n
e memorizzare in un vettore C di dimensione n lintersezione degli elementi dei
due vettori
Esercizio 52 Leggere da tastiera due vettori A e B di interi di dimensione n e
memorizzare in un vettore C di dimensione n gli elementi di A che non stanno
in B
Esercizio 53 Leggere da tastiera i primi k elementi di un vettore A di interi
di dimensione n (con k < n) e un intero x e inserire lelemento nella posizione
centrale del vettore facendo scorrere di un posto verso destra tutti gli elementi
successivi alla posizione centrale
Esercizio 54 Leggere da tastiera un vettore A di interi di dimensione n e un
intero x ed eliminare da A lelemento x nella prima posizione in cui si trova in
A, facendo scorrere di un posto verso sinistra tutti gli elementi successivi alla
posizione di x
Programmi con le matrici
Esercizio 55 Leggere da tastiera una matrice T di 7 righe e 3 colonne di numeri
reali, contenente le temperature riportate in tre localit`a negli ultimi sette giorni,
e calcolare per ogni localit`a la temperatura media, massima e minima.
Esercizio 56 Leggere da tastiera una matrice A di 3 righe e 4 colonne di nu-
meri reali e calcolare la matrice trasposta B, cio`e ottenuta da A in cui le righe
di A corrispondono alle colonne di B. Ovviamente B dovr`a avere 4 righe e 3
colonne.
Esercizio 57 Legge da tastiera una matrice di NN numeri reali e visualizzare
la colonna della matrice con la somma degli elementi pi u alta.
Esercizio 58 (per chi gi`a conosce la teoria delle matrici) Leggere da tastiera
due matrici A e B di N N numeri reali e calcolare la somma C = A+B e il
prodotto D = AB, visualizzando le due matrici ottenute
Esercizio 59 (per chi gi`a conosce la teoria delle matrici) Leggere da tastiera
due matrici A e B di N N numeri reali e calcolare la matrice C = A
t
BA, ove
per A
t
si intende la matrice trasposta di A.
6
Programmi con le stringhe
Esercizio 60 Leggere da tastiera una stringa x e calcolare x, ossia la stringa
inversa di x.
Esercizio 61 Leggere da tastiera due stringhe x e y e calcolare la stringa xyx,
ottenuta concatendo la stringa inversa di x, y e x.
Ad esempio se x=gal e y=ri allora il programma deve visualizzare la
stringa lagrilag
Esercizio 62 Leggere da tastiera due stringhe X e Y e un intero n e calcolare
due stringhe X

e Y

cos denite: X

ha i primi n caratteri di X e la parte di


Y dal n + 1esimo carattere in poi, Y

ha i primi n caratteri di Y e la parte di


X dal n + 1esimo carattere in poi,
Esercizio 63 Leggere da tastiera un aggettivo maschile singolare e visualizzare
a video laggettivo al maschile plurale, al femminile singolare e al femminile
plurale
Esercizio 64 Leggere da tastiera una stringa contenente un verbo allinnito
in italiano e lo visualizza coniugato al presente indicativo (considerare solo i
verbi regolari delle tre coniugazioni)
Esercizio 65 Leggere da tastiera un numero intero n e calcolare la stringa di
0 e 1 rappresentazione binaria di n
Esercizio 66 Leggere da tastiera due numeri interi n e b e calcolare la stringa
rappresentazione di n in base b (attenzione alle basi maggiori di 10)
Strutture e array di strutture
Esercizio 67 Denire una struttura adatta a memorizzare una frazione, leggere
da tastiera una frazione e semplicarla.
Esercizio 68 Utilizzando la struttura della sezione precedente, leggere da tastiera
due frazioni, calcolarne somma e prodotto e semplicarle
Esercizio 69 Denire una struttura adatta a memorizzare un numero comp-
lesso, leggere da tastiera due numeri complessi e calcolarne somma e prodotto.
Esercizio 70 Denire una struttura adatta a memorizzare una data, leggere da
tastiera una data e visualizzarne la data successiva
Esercizio 71 Denire una struttura dati adatta a memorizzare il cognome e
lo stipendio dei dipendenti di unazienda, leggere da tastiera i dati e trovare il
dipendente con lo stipendio pi` u alto
Esercizio 72 Denire il cognome let`a e lo stipendio dei dipendenti di unazienda,
leggere da tastiera i dati e visualizzare i dipendenti in ordine prima di stipendio
e in caso di parit` a per et`a.
7
Esercizio 73 Denire una struttura dati adatta a memorizzare il nome, il nu-
mero di medaglie doro, dargento e di bronzo delle squadre partecipante ad
unolimpiade, leggere da tastiera i dati e visualizzare la classica (prima con-
tano gli ori, a parit`a gli argenti, a parit`a i bronzi)
Esercizio 74 Denire una struttura dati adatta a memorizzare il cognome, il
numero di conto e limporto degli ultimi N movimenti dei correntisti di una
banca, leggere da tastiera i dati e visualizzare per ogni correntista il numero di
conto e la somma algebrica dei movimenti eettuati
Esercizio 75 Denire una struttura adatta a memorizzare i dati degli esami
di uno studente (nome materia, data, voto) e visualizzare un men` u con cui `e
possibile inserire i dati di un nuovo esame, visualizzare la media e terminare il
programma
Esercizio 76 Denire una struttura adatta a memorizzare i dati degli studenti
iscritti ad un corso di laurea (nome, cognome, matricola, numero e dati degli
esami sostenuti) e visualizzare un men` u con cui `e possibile inserire i dati di
un nuovo esame dato da uno studente, inserire un nuovo studente, eliminare
uno studente, visualizzare gli esami e la media di uno studente e terminare il
programma
Procedure e funzioni
Non si forniscono esercizi esclusivi per le procedure e funzioni, ma si invita a
risolvere gli esercizi precedenti sviluppando procedure o funzioni, che ricevono
come parametri di ingresso i dati che invece nel testo originale dellesercizio sono
letti da tastiera e che restituiscono in parametri di uscita (o come risultato, se
si usa una funzione) gli eventuali risultati che nel testo originale dellesercizio
sono visualizzati a video.
Ad esempio lesercizio 39 diventa: Scrivere una procedura che riceve come
parametro di ingresso un vettore di N numeri reali e che restituisce in un
parametro di uscita una delle quantit`a dellesercizio 34
Si eviti per`o di usare a tale scopo gli esercizi, come il 59, in cui ci sono troppi
risultati
Ricorsione
Esercizio 77 Scrivere una funzione ricorsiva che calcola lelevamento a potenza
di un numero reale X ad un esponente intero non negativo e
Esercizio 78 Estendere lesercizio precedente al caso in cui lesponente sia an-
che negativo
Esercizio 79 Scrivere una funzione ricorsiva che dato il numero di oggetti n e
un numero intero k n calcola il numero di disposizioni D
nk
degli n oggetti a
k a k secondo la formula
D
nk
= n (n 1) (n 2) . . . (n k + 1)
8
Esercizio 80 Scrivere una funzione ricorsiva che conta il numero delle cifre di
un numero intero (Sugg. se si prende un numero intero, ad esempio N=12345,
allora N div 10=1234 `e il numero tranne lultima cifra, cio`e ha un numero di
cifre diminuito di uno rispetto a N, da ci`o . . . ).
Esercizio 81 Scrivere una funzione ricorsiva che calcola la somma delle cifre
di un numero intero. Ad esempio se il numero `e 345 la somma delle cifre `e
3 + 4 + 5 = 12.
Esercizio 82 Scrivere una funzione ricorsiva che calcola, dati N e K, il coe-
ciente binomiale secondo le ben note propriet`a
_
n
0
_
=
_
n
n
_
= 1
_
n
k
_
=
_
n 1
k 1
_
+
_
n 1
k
_
Esercizio 83 Scrivere una funzione ricorsiva che controlla se una stringa `e
palindroma, cio`e `e indierente leggerla da sinistra a destra o viceversa (ad es.
anna, esse, onano, abccba, ecc.)
Esercizio 84 Scrivere una funzione ricorsiva che dato un vettore X di interi e
un numero intero n calcola il massimo dei primi n elementi di X
Esercizio 85 Scrivere una funzione ricorsiva che dato un vettore A di interi,
un numero intero n e un intero X restituisce true se X e presente tra i primi
n elementi di A, false viceversa
Liste
Esercizio 86 Scrivere una funzione che calcola il massimo di una lista di interi
Esercizio 87 Scrivere una procedura che ricevendo come parametro di ingresso
una lista L di interi e due interi k1 e k2 restituisce in un parametro di uscita
una seconda lista di interi che contiene gli elementi di L che sono compresi tra
k1 e k2.
Esercizio 88 Scrivere una procedura che data (come parametro di ingresso)
una lista di interi restituisce come parametri di uscita la somma degli elementi
di posto pari e la somma degli elementi di posto dispari
Esercizio 89 Scrivere una procedura che date (come parametri di ingresso) due
liste A e B di interi restituisce come parametro di uscita una lista che contiene
tutti gli elementi di A che non sono contenuti in B
Esercizio 90 Scrivere una procedura che data una lista ordinata L di interi,
contenente elementi possibilmente duplicati, restituisce in un parametro di uscita
una lista (ordinata) contenente tutti gli elementi di L senza duplicati.
Esercizio 91 Scrivere una funzione che data una lista ordinata L di interi
e un numero intero k restituisce come risultato la somma degli elementi di L
minori di k
9
Alberi
Esercizio 92 Scrivere una funzione che dato un albero binario R di interi e
un intero X restituisce true se esiste un nodo di R con chiave pari a X, false
altrimenti.
Esercizio 93 Scrivere una funzione che dato un albero binario di ricerca R
di interi e un intero X restituisce come risultato il numero di nodi di R con
chiave superiore a X.
Esercizio 94 Scrivere una funzione che dato un albero binario A restituisce
come risultato il numero di nodi con un solo glio
Esercizio 95 Scrivere una funzione che dato un albero binario A restituisce
true se ogni nodo ha una chiave maggiore delle chiavi dei suoi gli, false altri-
menti
File
Non si forniscono ulteriori esercizi per i le, ma si invita a risolvere gli esercizi
delle sezioni relative agli array e agli array di strutture leggendo i dati da le e
registrando su le gli eventuali risultati (sullo stesso le da cui si `e letto per i
casi in cui si richiede di modicare i dati iniziali).
10