Esercizi di Informatica per la classe terza

Esercizi di Informatica per la classe terza
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
11)
12)
13)
Un Parcheggio applica le seguenti tariffe
Prima ora
Dalla seconda alla sesta ora, ogni ora
Dalla sesta ora in poi, ogni ora
0,80 Euro
0,50 Euro
0,30 Euro
Conoscendo l’ora di entrata e l’ora di uscita (nell’arco dello stesso giorno), definire un programma
che consenta di calcolare il costo del parcheggio.
Date le coordinate cartesiane di 2 punti A, B, quale dei due punti è più vicino all’origine degli assi?
Dato un punto P di coordinate (X, Y), indicare se appartiene ad uno degli assi, se non appartiene agli assi
indicare in quale quadrante è posizionato.
Dati il coefficiente angolare e il termine noto di una retta (M e Q) e dato un punto P di coordinate (X, Y), dire
se il punto appartiene alla retta.
Date le coordinate di un punto del piano cartesiano, e una retta di equazione aX+bY+c=0, verificare che
il punto dato appartiene o meno alla retta.
Date le coordinate cartesiane di 3 punti A, B, C, quale dei segmenti (AB, AC, BC) e più lungo?
Date le coordinate cartesiane A(XA, YA), B(XB, YB), trovare l’area e il perimetro del rettangolo che ha come
vertici opposti i punti A e B; si controlli che XA<XB e YA>YB.
Inserite le coordinate del centro e il raggio di 2 circonferenze, dire se sono esterne, tangenti o secanti
Dato un numero intero N effettuare la somma delle cifre che lo compongono (es. 2651 -- > 14).
Dato un numero intero N (1<=N<=50), visualizzare una riga di N asterischi, se il numero N non è compreso
fa 1 e 50 visualizzare un opportuno messaggio.
Sapendo che un albero cresce, ogni anno del 20% dell’altezza dell’anno precedente e che l’altezza iniziale è
di 100 cm:
a) Visualizzare per N anni (con N fornito dall’utente) l’altezza, anno per anno dell’albero
b) Calcolare e stampare il numero di anni che occorrono perché l’altezza raddoppi.
Definire un programma che richieda all’utente di inserire la misura delle altezze di un gruppo di persone;
dopo l’inserimento di ogni misura si deve chiedere all’utente se vuole continuare o meno l’inserimento; al
termine visualizzare il numero di misure inserite e il numero di persone che hanno una altezza compresa tra
1,65 e 1,75 metri.
Dato il seguente programma, effettuare un tracciato di esecuzione supponendo che M = 50, cosa verrà
visualizzato su video?
int main()
{
int M,A,S,K;
cin>>M;
A = 1; K = 0; S = A;
do {
K = K + 1;
A = 2*A + 1;
S = S + A;
} while (S<=M);
cout<<K<<" "<<S<<" "<<A<<endl;
}
14)
Dati gli orari (ore e minuti) di partenza e di arrivo di un treno, da due stazioni
dello stesso giorno, calcolare la durata del viaggio.
e nell'ambito
15)
Dati i coefficienti dell'equazione di una retta (ax+by+c=0) dire se la retta è parallela ad uno degli
assi, passa per l'origine oppure interseca gli assi.
16)
Date le coordinate di tre punti del piano cartesiano, si calcolino le distanze dei tre punti dall'origine
e si stampino le coordinate del punto più vicino all'origine.
17)
Generalizzare l'esercizio precedente (n. 3), supponendo che la sequenza di coordinate da inserire
sia terminata dalla coppia (0,0).
18)
19)
20)
Utilizzando, per esempio, il carattere X, disegnare sul video un rettangolo di 10 righe ed 25 colonne
contenenti il carattere suddetto, partendo da una posizione di riga e colonna scelta dall'utente.
Calcolare la potenza di un numero reale, introdotto dall’utente.
In un parcheggio si pagano L 2000 per la prima ora, L 1000 per ogni ora successiva fino alla quinta ora
compresa, L 500 fino alle ore 24. Costruire un algoritmo che richieda l'immissione dell'ora di arrivo e
dell'ora di uscita dal parcheggio e visualizzi il tempo di parcheggio e la relativa spesa. Inoltre a fine
giornata (quando l'ora d'arrivo immessa è 0) visualizzi, il numero di automobili che hanno parcheggiato
e l'incasso totale.
21)
Una stazione metereologica rileva per una intera settimana, per ogni ora del giorno, la temperatura del
luogo. A fine settimana per un utente deve essere possibile:
a) Visualizzare le temperature di una intera giornata, indicata dall'utente stesso, con i valori
massimi e minimi e le ore in cui sono stati rilevati, visualizzare inoltre la temperatura media
della giornata;
b) Visualizzare per ciascuna delle ore la temperatura media relativa all'intera settimana;
22)
Un ente deve organizzare i dati relativi alle nascite avvenute per ciascun mese del 1999 nelle 20 regioni
italiane. Su tali dati (che si suppongono già inseriti in ordine alfabetico di regione) per un utente deve essere
possibile:
a)
b)
c)
d)
visualizzare il numero di nati, per ciascun mese, di una regione indicata dall'utente stesso;
visualizzare il numero di nati, per ciascuna regione, in un mese indicato dall'utente stesso;
trovare e visualizzare il numero maggiore di nascite;
trovare le regioni in cui si è avuto il numero maggiore di nascite e visualizzarle insieme al mese in
cui ciò si è verificato;
e) Calcolare la somma delle nascite di ogni regione;
f) Visualizzare i dati secondo il seguente prospetto:
Abruzzo
Basilicata
…..
Gen
140
..
…
Feb
130
..
..
Mar
141
.
..
Apr
151
…
..
Mag
130
Giu
151
Lug
120
.
.
…
Ago
80
Set
151
Ott
126
Nov
123
Dic
100
23)
Copiare in un array monodimensionale i nomi delle regioni il cui totale delle nascite è maggiore di 20.000 e
visualizzare l’array ottenuto;
24)
Costruire un programma che permetta di acquisire due valori interi e l'operazione (+, -, *, /) che si intende
fare. Visualizzare, nel caso l'operazione sia fattibile, il risultato.
25)
Acquisita dall'esterno una sequenza di valori interi positivi, terminata dal valore 0, dire quanti valori sono stati
introdotti e quanti di questi cadono nell'intervallo [100, 999].
26)
Data una stringa contenente delle parole separate da un unico spazio bianco, estrarre tutte le parole e
inserirle in un vettore di stringhe. Visualizzare poi, il numero di parole, l'elenco delle parole stesse con la
rispettiva lunghezza e la lunghezza media delle parole.
27)
Dati due vettori ordinati di interi (ciascuno senza duplicazioni) rispettivamente di dimensione 512 e 1024,
costruire un terzo vettore che contenga gli elementi in comune. Visualizzare il vettore così ottenuto se
contiene elementi o visualizzare un messaggio opportuno. Si cerchi, possibilmente una soluzione
"efficiente" in termini di velocità.
28)
Calcolare il seno di un angolo utilizzando l'espansione :
sen(x) = x - x^3/(3*2*1) + x^5/(5*4*3*2*1) - x^7/(7*6*5*4*3*2*1) ....
L'algoritmo risolutore deve poter ricevere in ingresso il valore dell'angolo, per il quale e' richiesto il
calcolo, espresso in radianti e deve stampare il valore dell'angolo, il valore del seno dell'angolo e il
numero di termini sommati per effettuare il calcolo, stabilendo di non prendere in considerazione quantità
in valore assoluto inferiori a 10^-9.
Tot
1543
29)
30)
31)
32)
Dato un vettore V[1..230] di valori reali, non ordinato, si vuole conoscere la posizione in cui andrà
l'elemento V[1] dopo l'ordinamento, senza ordinare il vettore e scandendo il vettore stesso una sola
volta.
Utilizzando, per esempio, il carattere X, disegnare sul video un rettangolo di 10 righe ed 25 colonne
contenenti il carattere suddetto, partendo da una posizione di riga e colonna scelta dall'utente.
Dato un numero intero N>0 effettuare la somma delle cifre che lo compongono, se tale somma e'
maggiore di 9, effettuare la somma delle cifre del numero ottenuto e cosi' via, fino a quando la somma
di tali cifre non risulta inferiore a 9.
Date le due successioni:
S: an+1 = 4/3 * an + 1
33)
34)
35)
36)
37)
38)
39)
40)
e
W: bn+1 = 5/4 * bn + 1
con a0 = 1 e b0 = 1, e dato un numero NMAX > 1, quale fra le somme parziali delle due successioni raggiunge
o supera per prima il valore NMAX ?
Definire un programma che permetta di riempire un vettore di N elementi interi (con N scelto dall'utente),
con valori, generati a caso nell'intervallo [-200..200] tutti diversi fra loro.
Data una stringa, costruire due stringhe una con i caratteri di posto dispari ed una con i caratteri di posto
pari.
Scrivere un programma che riceve tre numeri interi in ingresso e determina se può esistere un triangolo
avente i lati della lunghezza dei tre numeri dati.
Esempio:
Se i dati in ingresso sono: x=10, y=7, z=8; può esistere un triangolo avente i tre lati di lunghezza 10, 7 e 8
Se i dati in ingresso sono: x=10, y=6, z=3; non può esistere un triangolo avente i tre lati di lunghezza 10, 6 e 3
Scrivere un programma che riceve in input le coordinate cartesiane dei due vertici opposti di un rettangolo
e determina la lunghezza dei lati e l'area del rettangolo.
Esempio:
Se i dati di input sono x1=3, y1=4, x2=6, y2=8
I dati di output sono lato1=3, lato2=4, area=12
Se i dati di input sono x1=-3, y1=4, x2=2, y2=8
I dati di output sono lato1=5, lato2=4, area=20
Scrivere un programma che riceve in input le coordinate cartesiane dei due vertici opposti di due rettangoli
e determina se tali rettangoli sono sovrapposti o disgiunti
Esempio:
Se i dati di input sono
rett1_x1=3, rett1_y1=4, rett1_x2=6, rett1_y2=8
rett2_x1=0, rett2_y1=0, rett2_x2=5, rett2_y2=5
L'informazione in uscita deve indicare che i due rettangoli sono sovrapposti
Se i dati di input sono
rett1_x1=3, rett1_y1=4, rett1_x2=6, rett1_y2=8
rett2_x1=-1, rett2_y1=-2, rett2_x2=2, rett2_y2=1
L'informazione in uscita deve indicare che i due rettangoli non sono sovrapposti
Scrivere un programma che legge una sequenza di 10 interi e
- li memorizza in un array A,
- ne calcola il quadrato di ciascuno e lo memorizza nella posizione di indice corrispondente in un array B,
- ne calcola analogamente il cubo, memorizzandolo in una array C
- visualizza il contenuto di b e di c
Si consideri una sequenza di 15 interi, scrivere un programma che
- li memorizza in un array A,
- trovi l’elemento massimo (o minimo).
Siano assegnati in ingresso la quantità e gli elementi di un array di interi. Si scriva un programma che dopo
aver riempito l’array, fornisca il numero di elementi dispari presenti nell’array.
Esempio:
INPUT 8
22 13 15 23 50 15 52 5
OUTPUT
Nell’array sono presenti 5 elementi dispari
41)
Siano assegnati in ingresso la quantità e gli elementi di un array di interi. Si scriva un programma che dopo
aver letto l’array, copi in altri due array i valori pari ed i valori dispari presenti. Si forniscano in uscita gli
array ottenuti, stampando per primo il vettore con numero minore di elementi.
Esempio:
INPUT 8
22 13 15 23 50 15 52 5
OUTPUT
Pari
22 50 52
Dispari
13 15 23 15 5
42)
Siano dati in ingresso la quantità e gli elementi di un array di interi; sia dato, inoltre, un ulteriore valore
intero K. Scrivere un programma che ordini l’array in senso crescente, stampi l’array ordinato, inserisca K
nell’array mantenendo l’ordinamento ed infine stampi l’array così modificato.
Esempio:
INPUT 8
2 10 8 7 6 13 1 4 (elementi dell’array)
9 (valore di K)
OUTPUT
L’array ordinato e’:
1 2 4 6 7 8 10 13
L’array ordinato dopo l’inserimento e’:
1 2 4 6 7 8 9 10 13
43)
Siano dati in ingresso la quantità e gli elementi valori di un array di interi; sia dato, inoltre, un ulteriore
valore intero K. Scrivere un programma che stampi i primi due elementi dell’array maggiori di K, se
esistenti, o un opportuno messaggio nel caso contrario.
Esempio:
INPUT (1) 8
2 10 8 7 6 13 11 4 (elementi dell’array)
9 (valore di K)
OUTPUT (1)
I primi due elementi maggiori di 9 sono: 10 13
INPUT (2) 8
2 10 8 7 6 13 11 4 (elementi dell’array)
12 (valore di K)
OUTPUT (2)
Non ci sono due elementi maggiori di 12
44)
Siano dati in ingresso la quantità e gli elementi valori di un array di interi; sia dato, inoltre, un ulteriore
valore intero K. Scrivere un programma che verifichi se esiste una terna di elementi consecutivi la cui
somma sia maggiore di K e, in caso positivo, ne stampi i valori. Stampi un opportuno messaggio nel caso
contrario.
Esempio:
INPUT (1) 8
2 9 8 7 6 13 11 4 (elementi dell’array)
25 (valore di K)
OUTPUT (1)
Terna trovata: 7 6 13
INPUT (2) 8
2 9 8 7 6 13 11 4 (elementi dell’array)
50 (valore di K)
OUTPUT (2)
Terna non trovata
45)
Siano dati in ingresso la quantità e gli elementi valori di un array di interi; sia dato, inoltre, un ulteriore
valore K, verificare se K compare nell’array o meno.
Esempio:
INPUT 5
13 9 8 17 6 (elementi dell’array)
17 (valore di K)
OUTPUT
Trovato
46)
Siano dati in ingresso la quantità e gli elementi valori di un array di interi; sia dato, inoltre, un ulteriore
valore K, trovare il numero di occorrenze di K nell’array.
Esempio:
INPUT 7
8 9 17 8 8 17 6 (elementi dell’array)
8(valore di K)
OUTPUT
Il valore 8 compare 3 volte
47)
Siano dati in ingresso la quantità e gli elementi valori di un array A di interi, creare un nuovo array di interi
ottenuto da A sostituendo ogni numero negativo con 0.
Esempio:
INPUT 6
8 -9 -37 18 -5 17 6 (elementi dell’array)
OUTPUT
8 0 0 18 0 17 6 (elementi dell’array risultante)
Esercizi sulle stringhe e sui caratteri
48)
Inserire delle stringhe formate da sequenze di caratteri A e B, contare il numero di stringhe lunghe 8
caratteri e che contengono la sottostringa AAA, l’inserimento termina quando l’utente inserisce una stringa
formata da un asterisco (‘*’).
49)
Inserita una stringa, se la sua lunghezza è inferiore a 20 caratteri, aggiungere in fondo gli asterischi che
servono per portare la lunghezza della stringa a 20.
50)
Inserita una stringa se è di lunghezza pari (>2) estrarre e visualizzare i due caratteri centrali, se è di
lunghezza dispari (>3) estrarre e visualizzare i tre caratteri centrali.