LAVORO ESTIVO DI INFORMATICA CLASSE 2O

LAVORO ESTIVO DI INFORMATICA
CLASSE 2O
• PER COLORO CHE HANNO AVUTO LA SOSPENSIONE DEL GIUDIZIO, GLI
ESERCIZI SVOLTI DEVONO ESSERE CONSEGNATI TASSATIVAMENTE IL
GIORNO DELL'ESAME SCRITTO.
• A CHI È STATO ASSEGNATO IL LAVORO ESTIVO SENZA SOSPENSIONE DEL
GIUDIZIO LA CONSEGNA DOVRÀ AVVENIRE IL PRIMO GIORNO DI SCUOLA.
• LA PUNTALITÀ NELLA CONSEGNA, L'ORDINE, LA RICCHEZZA DI COMMENTI
CHIARIFICATORI, LA QUALITÀ E LA QUANTITÀ DEL LAVORO SVOLTO
RIENTRERANNO TRA GLI ELEMENTI CHE SARANNO PRESI IN
CONSIDERAZIONE PER LA VALUTAZIONE FINALE.
1. Scrivere il programma che dati in input da tastiera due numeri interi A e B, assegni a C:
• il valore A+B se A>0 oppure se B>5.
• il valore A–B negli altri casi.
Visualizzare sullo schermo il valore di C.
2. Scrivere il programma che dati in input da tastiera due numeri reali A e B, calcoli C=A*B e
visualizzi sullo schermo il risultato accompagnato dal messaggio:
• “A e B sono concordi”, nel caso in cui C>0;
• “A e B sono discordi”, nel caso in cui C<0;
• “Almeno uno dei due numeri è nullo” se A e/o B sono uguali a zero.
3. Scrivere un programma che visualizzi un messaggio a video se un numero intero x inserito in
input da tastiera è contemporaneamente multiplo di 7 e pari. Se almeno una delle due
condizioni non si verifica manda a video il messaggio “il numero non soddisfa almeno una
condizione”. Se entrambe le condizioni sono soddisfatte scrive a video “il numero soddisfa le
condizioni” .
4. Dati in input il nome e l’età di una persona, stampa a video il nome e la scritta
MAGGIORENNE se la persona è maggiorenne.
5. Dato in input il nome e il prezzo di un prodotto, calcola e stampa il prezzo da pagare sapendo
che se il prezzo è superiore a 3000 € applichi il 6% di sconto e, inoltre, se il pagamento avviene
in contanti, devi applicare uno sconto del 2%.
6. Dato in input un numero compreso tra 1 e 12 scrivi il mese corrispondente. Se il numero letto
non è compreso in tale intervallo scrivi a video il messaggio “ERRORE”.
7. Stabilisci se un carattere letto in input da tastiera è una vocale o una consonante.
8. Stabilisci se due numeri inseriti da tastiera sono concordi o discordi.
9. Dati in input tre numeri stampa quelli positivi.
10. Il costo di un soggiorno in un albergo varia secondo questa tabella:
bassa stagione
Camera singola
40 €
Camera doppia
75 €
alta stagione
Camera tripla
110 €
Camera singola
50 €
Camera doppia
90 €
Camera tripla
140 €
Dati in input il periodo desiderato (“A”= alta stagione, “B”= bassa stagione), il numero di
giorni di pernottamento e il tipo di camera (“S” = singola, “D” = doppia, “T” = tripla), calcola
il prezzo del soggiorno sapendo che per soggiorni lunghi (da 7 giorni in poi) l’albergatore
pratica uno sconto del 5%.
11. Ricevuto in input il numero di insufficienze riportate da uno studente a fine anno scrivere a
video se lo studente è promosso, bocciato o se ha il giudizio sospeso -rimandato- attraverso
opportune stringhe di testo. Si supponga che se ha 0 insufficienze sia promosso, se ne ha 1
oppure 2 sia rimandato, se ne ha più di due sia bocciato. Il numero di insufficienze potrà essere
reinserito anche più di una volta nel caso in cui fosse <0.
12. Una multa se viene pagata dopo 7 giorni aumenta del 10%, dopo 14 giorni del 30%. Ricevuti in
ingresso l’ammontare iniziale della multa e il numero di giorni dopo cui viene pagata, calcolare
e scrivere a video l’ammontare finale da pagare. Per semplicità non viene richiesto di validare
l’input.
13. Inserire tre numeri interi A, B, C. Se i tre valori sono uguali visualizza “Hai fatto tris”, se solo
due di essi sono uguali visualizza “Hai fatto coppia”, altrimenti visualizza “Hai perso”.
14. In un parcheggio si paga € 4 per la prima ora, € 3 per ciascuna ora dalla seconda alla quinta, € 2
per ciascuna delle ore successive. Ricevuto in lettura il numero delle ore di permanenza nel
parcheggio, che potrà essere reinserito da tastiera anche più di una volta nel caso in cui fosse
<=0, calcola e scrivi a video quanto dovrà essere pagato alla cassa del parcheggio.
15. Dare in input il nome di due squadre e i punteggi conseguiti da ciascuna di esse in una gara.
Scrivere quindi a video il nome della squadra vincente o in caso di pareggio entrambi i nomi
delle squadre.
16. Calcolare il costo della bolletta telefonica di un utente sapendo che i primi 30 scatti costano €
0,20 l’uno, gli scatti dal 31° fino al 100° costano € 0,15 l’uno, mentre gli ulteriori scatti costano
€ 0,10 l’uno. Andrà inoltre aggiunta una tassa fissa di € 2,50 per le spese telefoniche. In input
al programma sarà fornito il numero di scatti effettuati, che potrà essere reinserito da tastiera
anche più di una volta nel caso in cui fosse <0.
17. In un concorso, al punteggio conseguito nelle prove scritte vanno aggiunti i punti relativi al
titolo di studio secondo il seguente schema:
elementare
1 punto
media
2 punti
superiore
4 punti
laurea
7 punti
Nessun titolo
0 punti
Calcola e scrivi a video il punteggio finale conoscendo il punteggio iniziale e il titolo di studio.
18. In un albergo il prezzo della camera dipende dal piano in cui si trova secondo la seguente
tabella:
piano 1
€ 35
piano 2
€ 45
piano 3
€ 55
piano 4
€ 65
Calcola e scrivi a video il prezzo del conto sapendo il numero di giorni di soggiorno e il piano
della camera.
19. Scrivere un programma che risolva il problema di trovare le soluzioni di un'equazione di
secondo grado. Dati, in ingresso, da tastiera, i valori a, b, c restituisca in output le soluzioni
dell'equazione
ax2+bx+c=0
nel caso in cui queste esistano. (Usare la funzione sqrt includendo la libreria math.h)
20. Scrivere un programma che visualizzi sullo schermo tutti gli interi compresi tra N1 ed N2, con
N1 e N2 inseriti dal'utente e N2 strettamente maggiore di N1, e ne calcoli la somma.
Visualizzare anche il valore della somma.
21. Dati in input da tastiera due interi A e D scrivere a video i primi N termini, con N inserito
dall'utente strettamente positivo, della seguente successione:
A+D, (A+D)+D, (A+D+D)+D, …
cioè della successione in cui ogni termine si ottiene dal precedente sommando un valore
costante D. (Per tua conoscenza, una successione definita in questo modo si chiama
progressione aritmetica di ragione D).
22. Calcolare e scrivere a video il valore della circonferenza e quello dell’area di tutti i cerchi con
raggio compreso tra 1 e 20.
23. Effettuare la conversione euro-dollari sapendo che 1 € = 1.3927 $. Si vuole dare in output la
tabella di conversione da 1 fino a 100 €:
1.3927
2.7854
…
139.27
visualizzando quindi i 100 valori della conversione.
24. Scrivere un programma che risolva il problema di calcolare la media di N numeri naturali
inseriti da tastiera, con N≥0 anch’esso inserito da tastiera.
25. Scrivere un programma che legga una sequenza di numeri interi qualsiasi inseriti da tastiera (i
numeri possono essere anche negativi o nulli). La sequenza di numeri è chiusa dal numero 0,
cioè l'inserimento termina quando viene dato in input il numero 0. Inoltre, ogni volta che viene
inserito un numero controlla se sia >10 e in questo caso calcola il triplo del numero e lo scrive
a video, mentre se è <10 continua solo nell’inserimento del numero successivo senza dare a
video alcun output.
26. Scrivi un programma che conti per 9 da 21 a 138.
27. Scrivi un programma che legga un numero intero e ne scriva i primi 10 multipli. Inserisci, in un
secondo tempo, il controllo che il numero intero sia compreso tra 1 e 100 (estremi inclusi).
28. Realizza un programma che scriva i multipli di 17 compresi tra 1 e 300.
29. Scrivere a video la somma
1/2 + 2/3 +...+ N/(N+1),
con N positivo dato in input da tastiera. Se N<=0 manda a video un messaggio di errore.
30. In un classe IV vi sono ragazzi di varie età. Realizza un programma che, ricevuti in input le età
degli studenti, calcoli e scriva a video quanti sono gli studenti ancora minorenni.
31. Dato in input un elenco di studenti (per ogni studente viene fornito l’iniziale del nome, sesso
ed età) calcolare e scrivere a video l’età media delle femmine e l’età media dei maschi.
32. La divisione tra due numeri interi positivi può essere eseguita mediante sottrazioni successive:
si continua a sottrarre il divisore dal dividendo sino a quando non si ottiene un numero inferiore
al divisore; a quel punto il numero delle sottrazioni effettuate è il quoziente e il numero rimasto
è il resto. Ad esempio:
sottrazione numero 1:
23 – 6 = 17
sottrazione numero 2:
17 – 6 = 11
sottrazione numero 3:
11 – 6 = 5
Il numero di sottrazioni effettuate (3) è il quoziente, ossia il numero delle volte che “il 6 sta nel
23”; il numero rimasto (5) è il resto.
Scrivi un programma che legga due numeri interi m e n e calcoli il quoziente e resto della loro
divisione mediante il metodo delle sottrazioni successive.
33. Scrivere un programma che consenta di inserire da tastiera un intero a. Calcolarne e
visualizzarne il suo valore assoluto (o modulo) attraverso l'utilizzo di una funzione di nome
modulo che calcoli e restituisca come valore di ritorno il modulo di un intero che sarà
richiamato opportunamente nel main.
34. Scrivere un programma per calcolare il fattoriale di un numero intero positivo. Il programma
deve contenere una funzione di nome fattoriale che calcoli e restituisca come valore di ritorno
il fattoriale di un intero positivo che sarà richiamato opportunamente nel main.
(La funzione fattoriale è definita su valori interi >= 0:
Fatt(0)=1 e Fatt(N)=N*(N– 1)*(N– 2)*… *1)
35. Scrivi una funzione che riceva un orario espresso in ore, minuti, secondi e restituisca TRUE se
l’orario è valido, FALSE altrimenti.
36. Scrivere un programma che, presi in input il numero di persone che hanno votato in una
consultazione referendaria, scriva a video la percentuale dei sì e quella dei no; fare uso di una
funzione per il calcolo della percentuale (la funzione deve essere richiamata due volte con
diversi valori dei parametri).
37. Inserire un numero n da tastiera >1 e <1000. Se il numero inserito non lo fosse, permettere che
venga reinserito una volta. (Per semplicità consideriamo il caso in cui questo secondo numero
sia stato inserito rispettando i limiti prescritti). Calcolare e scrivere a video la prima potenza di
n che supera il valore 1000 e il relativo esponente che realizza tale condizione.
Il programma deve definire:
•
una costante di nome LIMITE che valga 1000;
•
una costante di nome MINIMO che valga 1;
•
una funzione di nome leggi che legga un intero da tastiera (il valore di ritorno può
essere void oppure int, a tua scelta);
•
una funzione che calcoli e restituisca come valore di ritorno la potenza ni, con i intero
positivo. Definisci tu la funzione potenza come fatto a lezione senza utilizzare la
funzione predefinita di C pow ma servendoti dell’operatore prodotto;
•
una funzione stampa che scriva a video prima l’esponente e poi la potenza cercata.
38. Scrivere a video i primi n multipli di k, n>0, n e k interi inseriti in input da tastiera.
Ad esempio se n=5 e k=9 scrivere a video:
9, 18, 27, 36, 45.
Dopo aver inserito n controlla che sia strettamente positivo.
Il programma deve contenere una funzione di nome prodotto che calcoli e restituisca come
valore di ritorno il prodotto di due interi, da utilizzare opportunamente nel main, inserendola in
un’iterazione.
39. Data in lettura una coppia di numeri interi positivi A e B, il programma stabilisce la
molteplicità di B in A, cioè quante volte l'intero B divide l'intero A, ovvero quante volte la
divisione di A per B dà quoziente intero e resto nullo. Se A<B scambia i due valori.
(Esempi:
• 2 ha molteplicità =4 in 16 poiché posso dividere 16 per 2 fino a 4 volte ottenendo resto
nullo.
• 3 ha molteplicità =2 in 36).
Definisci e richiama nel main:
1. una funzione leggi per leggere contemporaneamente i due interi A e B.
2. Una funzione leggi di valore di ritorno di tipo int che permette di inserire nuovamente A
o B se sono <= 0, da richiamare all’interno della stessa funzione leggi suddetta.
3. Una funzione scambia per scambiare le due variabili se A<B.
4. Una funzione di valore di ritorno di tipo int che calcola la molteplicità richiesta.
5. Una funzione che stampa a video il valore calcolato.
40. Genera un numero intero casuale x tra 0 e 999. Ricorda il
srand((unsigned)time(NULL)). Stampalo a video con una funzione di nome stampa.
Estrai dal numero x le sue cifre.
Ad esempio sia x=701, allora:
•
La cifra 0-esima è 1
•
La cifra 1-esima è 0
•
La cifra 2-esima è 7.
Ad esempio sia x=55, allora:
•
La cifra 0-esima è 5
•
La cifra 1-esima è 5
comando
•
La cifra 2-esima è 0.
Per farlo definisci una funzione che ha valore di ritorno di tipo int e che lavora su due variabili,
il numero x e la cifra k e restituisce il valore della cifra - come spiegato negli esempi.
(Suggerimento: il valore della cifra si ottiene dividendo il numero x per 10 un numero di volte
pari a k ed utilizzando poi in maniera opportuna l’operatore che restituisce il resto della
divisione).
Richiama questa funzione nel main con un’iterazione su k in modo da restituire le cifre di
posizione 0, 1, 2.
Scrivi a video i valori delle cifre con la funzione stampa.
Conta infine quante volte si ripete nel numero la cifra 0,…, quante volte si ripete la cifra 9.
Restituisci tali valori con la funzione stampa.
41. Dati gli stipendi di N dipendenti realizza un programma che,memorizzati i dati in un vettore,
permetta di:
•
Visualizzare la posizione dello stipendio massimo;
•
Visualizzare la media degli stipendi;
•
Incrementare lo stipendio di tutti del 10%.
42. Dato un vettore contenente i premi pagati presso un’agenzia assicurativa, scrivi a video
l’elenco dei premi compresi tra due valori prefissati.
43. Memorizza in un vettore l’elenco dei prezzi di listino di alcuni prodotti. Aumenta tali prezzi,
tenendo presente che i prezzi inferiori a € 5 andranno aumentati del 10% mentre quelli
superiori andranno aumentati del 6%.
44. Sono forniti in input tre vettori paralleli contenenti rispettivamente: il numero di targa, la
categoria del veicolo e la velocità registrata da un sistema di controllo del traffico. Tali dati si
riferiscono a N veicoli circolanti in un tratto di autostrada in un determinato giorno. Scrivi un
programma che, dopo aver caricato i tre vettori, fornisca:
a. L’elenco dei veicoli appartenenti a una determinata categoria fornita in input;
b. La visualizzazione della categoria e la velocità registrata del veicolo con una determinata
targa (prevedi una segnalazione di errore se tale veicolo non esiste);
c. Dato in input il limite di velocità consentita, stampare il numero di targa e l’importo della
multa da pagare per ogni veicolo che ha superato il limite di velocità, calcolato secondo la
seguente tabella:
€ 25
Per velocità che superano il limite di una quantità fino a 10 km/h
€ 50
Per velocità che superano il limite di una quantità tra i 10 km/h e i 20 km/h
€ 150
Per velocità che superano il limite di una quantità superiore a 20 km/h
45. Definire una costante intera di nome N che valga 10. Dichiarare un vettore a N componenti di
nome vett e con elementi di tipo intero. Inserire da tastiera le componenti del vettore. Inserire
da tastiera un intero x. Confrontare x con ciascun elemento del vettore e dare in output quante
componenti di vett sono > x, quante = x, quante < x.
46. Definire una costante intera di nome N che valga 10. Dichiarare un vettore a N componenti di
nome vett e con elementi di tipo intero. Inserire da tastiera le componenti del vettore. Inserire
da tastiera un intero x. Cercare x all’interno del vettore confrontandolo con i suoi elementi a
partire dal primo fino a:
•
Trovare la prima occorrenza del numero cercato e restituire a video l’indice della posizione
in cui l’elemento è stato trovato
• Esaurire il vettore senza aver trovato il numero. In questo caso dare a video un messaggio
opportuno.
Servirsi di una variabile booleana di nome trovato per verificare se l’elemento è stato trovato
per dare a video i messaggi opportuni ed eventualmente l’indice richiesto.
47. Definire una costante intera di nome N che valga 10. Dichiarare un vettore a N componenti di
nome vett e con elementi di tipo intero. Inserire da tastiera le componenti del vettore. Stabilire e
visualizzare sullo schermo se gli elementi del vettore sono stati inseriti in ordine crescente.
(Servirsi di una variabile booleana di nome crescente che viene posta a false non appena trova
un elemento del vettore che non sia maggiore del precedente).
48. Generare casualmente 10 numeri, memorizzarli in un array ed effettuare lo scambio tra il
massimo e il minimo.
49. Generare in modo casuale un insieme di 12 valori interi compresi tra 10 e 100. Memorizzarli
come elementi di un vettore di nome vett e visualizzarli sullo schermo. Ribaltare il contenuto
del vettore scambiando tra loro due elementi alla volta: porre l’ultimo elemento nella prima
cella e viceversa, il penultimo nella seconda, ecc. Visualizzare sullo schermo il vettore vett
dopo il ribaltamento.
Ripetere il ribaltamento servendosi di un nuovo vettore di nome w di dimensione 12 e
visualizzarlo. Tale vettore w dovrà ribaltare il vettore vett ottenuto dopo il primo ribaltamento
(nota che così w sarà proprio uguale al vettore vett come inserito inizialmente).
50. Definire una costante intera di nome N che valga 10. Leggere da tastiera N interi. Memorizzarli
come elementi di un vettore e visualizzarli sullo schermo. Generare un nuovo vettore che
contenga i quadrati di tali elementi. Generare infine un terzo vettore che memorizzi gli
elementi del primo vettore senza memorizzare uno stesso numero due volte. Poiché questo
terzo vettore ha dimensione <=N, definire la sua dimensione uguale ad N e inizializzare tutte a
0 le sue componenti.
51. Scrivere un programma che legga 12 temperature medie mensili di una città in un vettore di
nome AnnoTemp e le visualizzi poi sullo schermo (utilizzare due FOR distinti).
Proseguire il programma scrivendo le istruzioni necessarie a:
1. Calcolare e visualizzare la media annua delle temperature.
2. Cercare e visualizzare la temperatura del mese il cui numero sia obbligatoriamente
compreso tra 0 e 11 (estremi inclusi).
3. Visualizzare quante temperature medie risultano positive e quante negative.
4. Calcolare e visualizzare quante temperature siano comprese tra -10 e 10 estremi inclusi.
5. Segnalare la presenza o meno di almeno un -20 tra le temperature medie inserite
(bloccare immediatamente la ricerca appena trovato il primo -20).
6. Contare e visualizzare quante temperature nel vettore sono uguali alla temperatura
media cercata CercaTemp inserita dall’utente con valore compreso tra -30 e +30
estremi inclusi.
7. Cercare e visualizzare la temperatura massima e il numero del mese in cui si verifica.
8. Visualizzare le temperature medie dei mesi che hanno l’indice del vettore dispari.