Le funzioni: passaggio per valore
Qui trovi un insieme di esercizi che richiedono l'utilizzo delle funzioni. Realizza la tua soluzione e poi confronta la tua soluzione con quella proposta dal professore.
Esercizi sulle funzioni con passaggio dei parametri per valore.
Esercizio 1: Analizziamo due numeri reali...
Si realizzino le seguenti funzioni in grado di effettuare calcoli partendo da due numeri reali in input:
double somma(double n1, double n2);
double sottrazione(double n1, double n2);
double moltiplicazione(double n1, double n2);
double divisione(double n1, double n2);
double media(double n1, double n2);
double maggiore(double n1, double n2);
double minore(double n1, double n2);
bool uguali(double n1, double n2);
bool concordi(double n1, double n2);
Il programma main deve chiedere all'utente di inserire due numeri reali e mostrare a schermo i risultati di tutte le funzioni create. Nota bene per le funzioni "uguali" e "concordi" mostrare a schermo un messaggio diverso in base al valore restituito da tali funzioni.
Esercizio 2: Analizziamo un numero intero...
Si realizzino le seguenti funzioni in grado di effettuare calcoli partendo da un numero intero in input:
int valoreAssoluto(int n1);
bool isPositivo(int n1);
bool isPari(int n1);
bool isMultiplo3(int n1);
Il programma main deve chiedere all'utente di inserire un numero intero e mostrare a schermo i risultati di tutte le funzioni create. Nota bene per le funzioni che ritornano un valore di tipo bool mostrare a schermo un messaggio diverso in base al valore restituito da tali funzioni.
Esercizio 3: Il menù della calcolatrice
Si crei un programma che preveda le quattro funzioni in grado di eseguire le operazioni fondamentali (somma, sottrazione, moltiplicazione e divisione) già creati nell'esercizio 1. Realizzare all'interno del main un menù iterativo che consenta all'utente di:
inserire due numeri;
scegliere quale operazione fare con uno switch case ('+' per la somma, '-' per la sottrazione, '*' per la moltiplicazione, '/' per la divisione);
mostrare a schermo il risultato dell'operazione scelta;
chiedere all'utente se vuole fare un'altra operazione (s/n);
Esempio di una esecuzione dell'esercizio 3.
Esercizio 4: Le funzioni che vorrei
Lo studente Giovanni vuole realizzare nuove funzioni in grado di calcolare il massimo e il minimo tra un insieme di valori. In particolare vuole implementare le seguenti funzioni:
La funzione maggioreTre che calcola e restituisce il valore più grande tra tre variabili di tipo double.
La funzione maggioreQuattro che calcola e restituisce il valore più grande tra quattro variabili di tipo double.
La funzione minoreTre che calcola e restituisce il valore più piccolo tra tre variabili di tipo double.
La funzione minoreQuattro che calcola e restituisce il valore più piccolo tra quattro variabili di tipo double.
Creare il main del programma attraverso un menu di scelta iterativo che consenta all'utente di effettuare diversi inserimenti e calcoli.
Esercizio 5: Le prime dieci potenze
Realizzare una funzione che calcola le prime 10 potenze di un numero positivo. Realizzare un main iterativo che permette di eseguire il programma più volte.
Esempio:
Input: 2 Output: 2^0 = 1 2^1 = 2 2^2 = 4 ... 2^9 = 512
Esercizio 6: Quadrato e Cubo di una sequenza di numeri
Realizzare un programma che prenda in input un valore n intero tra 1 e 100. Il programma deve stampare a schermo:
I valori da 1 fino ad n;
Il quadrato dei valori da 1 fino a n;
Il cubo dei valori da 1 fino a n.
La stampa dei valori a schermo deve essere fatta all'interno delle funzioni.
Esempio:
n = 3 --> 1, 2, 3 1, 4, 9 1, 8, 27
n = 4 --> 1, 2, 3, 4 1, 4, 9, 16 1, 8, 27, 64
Esercizio 7: Il viaggio dei due amici
Alessio e Claudio fanno un viaggio insieme e al termine della vacanza Alessio ha speso x euro, mentre Claudio ha speso y euro. Tuttavia, i due amici si erano ripromessi di fare in modo di dividere tutte le spese in modo equo.
Realizzare una funzione che sia in grado di far capire chi ha speso di meno, e quindi chi deve dare una parte di soldi all'amico. Inoltre, si implementi una funzione che faccia capire a chi sta in debito quanto è l'ammontare che deve pagare.
Esempio:
Alessio ha pagato x = 100€, Claudio ha pagato y = 200€ --> ne segue che Alessio è in debito e deve dare 50 € a Claudio per riequilibrare le spese fatte durante il viaggio.
Esercizio 8: Le patenti
Gino apre una nuova autoscuola in grado di istruire per i seguenti tipi di patente:
Patente 'A': età minima 16 anni.
Patente 'B': età minima 18 anni.
Patente 'C': età minima 21 anni.
Partendo dal programma che trovi in allegato scrivi le funzioni mancanti che permettano al main di funzionare. Il programma consente all'utente di inserire iterativamente la coppia età e patente e mostrare a schermo una frase che comunichi all'utente se può prendere tale patente in base all'età che ha.
Esercizio 9: I fratelli dormiglioni
Alessio e Daniele sono due fratelli a cui piace dormire. Un sortilegio li fa addormentare esattamente a mezzanotte. Sapendo l'orario in cui si sveglia Alessio e l'orario in cui si sveglia Daniele, realizzare un programma in grado di dire quale dei due fratelli ha dormito di più.
Per risolvere il problema si realizzi una funzione in grado di ricevere un orario (ore, minuti e secondi) e restituire il numero di secondi totali trascorsi dalla mezzanotte.
Esercizio 10: Dalla codifica RGB alla codifica CMYK
Il professor Tpsit ha scoperto le formule per poter passare dalla codifica RGB alla codifica CMYK. Creare un programma che sia in grado generare la codifica CMYK partendo da quella RGB. Si usino almeno due funzioni:
Una funzione per leggere da tastiera una componente del colore in formato RGB. (la funzione deve far inserire da tastiera un numero tra 0 e 255 e deve restituire tale valore alla funzione chiamante).
Una funzione che prende in input le tre componenti red (R), green (G) e blue (B), e stampa a schermo le componenti Ciano (C), Magenta(M), Giallo (Y) e Nero (K).
Per convertire dalla codifica RGB alla codifica CMYK utilizzare le seguenti formule:
I dati iniziali sono R, G e B.
Per prima cosa si calcolano i valori di R', G' e B':
R' = R / 255
G' = G / 255
B' = B / 255
Per calcolare le quattro componenti C, M, Y, K si usano le seguenti formule:
K = 1-max(R', G', B')
C = (1-R'-K) / (1-K)
M = (1-G'-K) / (1-K)
Y = (1-B'-K) / (1-K)
Esercizio 11: Testa o Croce
Realizzare una funzione che consenta all'utente di giocare a testa o croce. Una partita prevede 5 lanci della moneta, simulabili tramite la generazione di un numero random pari a 0 (testa) e 1 (croce). L'utente vince la partita se indovina il risultato della moneta per almeno 3 volte su 5.
Il programma main deve consentire all'utente di fare diverse partite.
Esercizio 12: L'alfabeto minuscolo
Funzione letteraMinuscola che riceve un carattere e restituisce 1 se tale carattere rappresenta una lettera dell'alfabeto minuscola, 0 altrimenti. Nel main creare un ciclo for che consenta di inserire 5 caratteri e che conti quanti di questi sono lettere minuscole dell'alfabeto. Differenziare la scritta prodotta in output come riportato negli esempi seguenti:
Input: 'a' '4' '?' 'v' 'S' Output: "Sono state inserite 2 lettere dell'alfabeto minuscolo."
Input: 'U' '!' 'e' '7' '+' Output: "è stata inserita solo 1 lettera minuscola."
Input: '4' '$' '&' '(' '0' Output: "Nessuna lettera dell'alfabeto minuscolo è stata inserita".
Esercizio 13: ASCII ed il legame tra char e int
Realizzare un programma in cui definire le seguenti funzioni:
Funzione che riceve come parametro in input un carattere e restituisce il numero decimale riportato nella tabella ASCII.
Funzione che riceve come parametro in input un valore decimale e restituisce il carattere ASCII corrispondente.
Funzione che sia in grado di stampare i primi 128 caratteri della tabella ASCII.
Funzione che riceve in input uno dei 16 caratteri usati dalla codifica esadecimale ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F') e restituisce il valore intero associato al carattere.
Nel main del programma creare uno switch-case e permettere all'utente di scegliere quale funzione richiamare.
Esercizio 14: Il massimo comune divisore
Implementare le funzioni richiamate all'interno del main riportato di seguito. Il programma chiede all'utente di inserire due numeri positivi (ossia maggiori di 0) e poi ne calcola il massimo comune divisore.
N.B. Il massimo comune divisore tra due numeri è il numero più grande che è sia divisore del primo numero, che divisore del secondo.
Esempio:
num1 = 10 num2 = 6 --> mCD = 2
num1 = 12 num2 = 7 --> mCD = 1
num1 = 8 num2 = 4 --> mCD = 4
num1 = 8 num2 = 8 --> mCD = 8
Esercizio 15: Sheldon alla ricerca dei divisori
Si realizzi una funzione che riceva un numero intero in input e che restituisca:
true: se il numero ha almeno 3 divisori.
false: altrimenti.
Si verifichi poi la nuova affermazione del professor Sheldon: "Se un numero n ha almeno 3 divisori, allora anche il più grande numero intero più piccolo del suo quadrato ha almeno tre divisori". Si progetti il main in modo tale da consentire di verificare se il professor Sheldon ha ragione.
Esercizio 16: Statistiche del corridore
In previsione della maratona si vuole realizzare un'applicazione in grado di generare statistiche utili al corridore.
Si realizzino le seguenti funzioni:
calcolaVelocitàMedia: si tratta di una funzione che partendo dalla distanza percorsa in km e dal tempo espresso in ore, restituisce la velocità media mantenuta dal corridore.
calcolaDistanzaPercorsa: si tratta di una funzione che partendo in input dalla velocità media e dal tempo trascorso sia in grado di restituire la distanza percorsa.
Si progetti il main in modo tale da consentire all'utente di usare iterativamente la prima o la seconda funzione che si è progettata.
Esercizio 17: Funzioni calcistiche
Si realizzino le seguenti funzioni:
calcolaDifferenzaReti: si tratta di una funzione che calcola la differenza reti di una squadra sottraendo i gol subiti dai gol segnati.
calcolaPercentualeVittorie: si tratta di una funzione che calcola la percentuale di vittorie di una squadra (si deve dividere il numero di partite vinte per il numero totale di partite giocate e moltiplicare per 100).
calcolaPuntiGuadagnati: si tratta di una funzione che calcola il numero di punti guadagnati da una squadra in base ai risultati delle partite (3 punti per una vittoria, 1 punto per un pareggio, 0 punti per una sconfitta).
Si progetti il main in modo tale da consentire all'utente di usare iterativamente la prima, la seconda o la terza funzione che si è progettata.
Esercizio 18: Statistiche delle Serie tv
Si realizzino le seguenti funzioni:
episodiMediPerStagione: si tratta di una funzione che prende in input il nome della serie televisiva e al suo interno chiede all'utente il numero di stagioni della serie tv e per ogni stagione il numero di episodi. La funzione deve restituire il numero medio di episodi presente in una stagione.
durataStagione: si tratta di una funzione che presi in input il nome della serie tv ed il numero della stagione scelta sia in grado di chiedere all'utente il numero di episodi presenti e la durata di ogni episodio. La funzione deve restituire la durata complessiva della stagione in minuti.
Si progetti il main in modo tale da consentire all'utente di usare iterativamente la prima o la seconda funzione che si è progettata.
Esercizio 19: L'estrazione del lotto
Si realizzi la seguente funzione:
estrazioneLotto: si tratta di una funzione che genera e stampa 5 numeri diversi compresi tra 1 e 90 (estremi inclusi).
Si progetti il main in modo tale da consentire all'utente di usare iterativamente la funzione che si è progettata.
Esercizio 20: L'interrogazione del prof
Si realizzi la seguente funzione:
interrogazioneProf: si tratta di una funzione che presi in input il numero totale di studenti presenti in classe ed il numero di studenti che il docente intende interrogare, sia in grado di stampare a schermo i numeri che identificano gli studenti da interrogare (generati casualmente). Anche in questo caso evitare che la funzione restituisca dei numeri uguali.
Si progetti il main in modo tale da consentire all'utente di usare iterativamente la funzione che si è progettata.
Esercizio 21: Esercizi con il codice Ascii
Esercizio a) Realizzare le funzioni:
char minuscolo (char c)
La funzione deve verificare se il char passato come parametro è una lettera maiuscola e in tal caso deve restituire il suo equivalente minuscolo. Negli altri casi invece, la funzione restituisce lo stesso carattere passato come parametro.
char maiuscolo (char c)
La funzione deve verificare se il char passato come parametro è una lettera minuscola e in tal caso deve restituire il suo equivalente maiuscolo. Negli altri casi invece, la funzione restituisce lo stesso carattere passato come parametro.
Esercizio b) Realizzare due funzioni:
La prima funzione dato come parametro un numero restituisce il carattere associato nella tabella ascii
La seconda funzione dato come parametro un carattere restituisce il valore numerico associato nella tabella ascii.
Esercizio c) Realizzare le seguenti funzioni:
void alfabetoMaiuscolo()
stampa a schermo l’alfabeto in maiuscolo: A B C…
void alfabetoMinuscolo()
stampa a schermo l’alfabeto in maiuscolo: a b c…
void codiceAscii()
stampa a schermo i primi 128 caratteri del codice ascii preceduti dal valore numerico corrispondente