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.
© Copyright 2024 ExpyDoc