· Andrea Pollini · programmazione · 5 min read
19 esercizi sulle funzioni in C++
Raccolta di 19 esercizi sulle funzioni in C++ per esercitarsi e migliorare le proprie competenze di programmazione.
Introduzione alle Funzioni
Le funzioni sono blocchi di codice autonomi e riutilizzabili che svolgono compiti specifici. Consentono di modularizzare il codice, rendendolo più leggibile, manutenibile e organizzato.
Dichiarazione di una funzione in C++:
tipo_di_ritorno nome_funzione(lista_parametri) {
// Corpo della funzione
}
tipo_di_ritorno
specifica il tipo di dato restituito dalla funzione (es:int
,void
,float
).nome_funzione
è un identificatore univoco che la funzione.lista_parametri
è un elenco facoltativo di parametri passati alla funzione, ognuno con un tipo di dato e un nome.corpo_della_funzione
contiene le istruzioni da eseguire all’interno della funzione.
Scopo delle funzioni:
- Modularità: Dividere il codice in blocchi funzionali ben definiti.
- Riutilizzabilità: Evitare la duplicazione di codice eseguendo la stessa operazione più volte.
- Organizzazione: Migliorare la leggibilità e la manutenibilità del codice.
- Astrazione: Nascondere i dettagli di implementazione, esponendo solo l’interfaccia di utilizzo.
Esercizi sulle Funzioni
1. Funzione di saluto: Scrivere una funzione che stampa un messaggio di saluto generico.
void saluto() {
std::cout << "Ciao a tutti!" << std::endl;
}
2. Funzione di somma: Scrivere una funzione che calcola la somma di due numeri interi passati come parametri.
int somma(int a, int b) {
return a + b;
}
3. Funzione di controllo della maggiore età: Scrivere una funzione che verifica se un’età (passata come parametro) è maggiore o uguale a 18 anni.
bool maggioreEta(int eta) {
return eta >= 18;
}
4. Funzione di calcolo dell’area di un quadrato: Scrivere una funzione che calcola l’area di un quadrato dato il suo lato (passato come parametro).
float areaQuadrato(float lato) {
return lato * lato;
}
5. Funzione di conversione da Celsius a Fahrenheit: Scrivere una funzione che converte una temperatura da Celsius a Fahrenheit.
float celsiusToFahrenheit(float celsius) {
return (celsius * 9.0 / 5.0) + 32.0;
}
6. Funzione di calcolo del massimo tra tre numeri: Scrivere una funzione che calcola il massimo tra tre numeri interi passati come parametri.
int massimoTreNumeri(int a, int b, int c) {
int max = a;
if (b > max) max = b;
if (c > max) max = c;
return max;
}
7. Funzione di controllo se un numero è pari o dispari: Scrivere una funzione che verifica se un numero intero (passato come parametro) è pari o dispari e stampa un messaggio corrispondente.
void pariDispari(int numero) {
if (numero % 2 == 0) {
std::cout << numero << " è un numero pari" << std::endl;
} else {
std::cout << numero << " è un numero dispari" << std::endl;
}
}
8. Funzione di calcolo del perimetro di un rettangolo: Scrivere una funzione che calcola il perimetro di un rettangolo date la sua base e la sua altezza (passate come parametri).
float perimetroRettangolo(float base, float altezza) {
return 2 * (base + altezza);
}
9. Funzione di calcolo del valore assoluto di un numero: Scrivere una funzione che calcola il valore assoluto di un numero intero (passato come parametro).
int valoreAssoluto(int numero) {
if (numero >= 0) return numero;
else return -numero;
}
10. Funzione di calcolo del fattoriale di un numero: Scrivere una funzione ricorsiva che calcola il fattoriale di un numero intero non negativo (passato come parametro).
int fattoriale(int n) {
if (n == 0) return 1;
else return n * fattoriale(n - 1);
}
11. Funzione di verifica se un numero è primo: Scrivere una funzione che verifica se un numero intero (passato come parametro) è un numero primo.
bool isPrimo(int numero) {
if (numero <= 1) return false;
for (int i = 2; i <= sqrt(numero); i++) {
if (numero % i == 0) return false;
}
return true;
}
12. Funzione di ordinamento di un array di interi: Scrivere una funzione che ordina un array di interi in ordine crescente utilizzando il metodo di scambio.
void ordinaArray(int array[], int dimensione) {
for (int i = 0; i < dimensione - 1; i++) {
for (int j = i + 1; j < dimensione; j++) {
if (array[i] > array[j]) {
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
13. Funzione di ricerca di un elemento in un array di interi: Scrivere una funzione che cerca un elemento specifico in un array di interi e restituisce la sua posizione (se presente) o -1 se non viene trovato.
int ricercaElemento(int array[], int dimensione, int elemento) {
for (int i = 0; i < dimensione; i++) {
if (array[i] == elemento) return i;
}
return -1;
}
14. Funzione di calcolo della media di un array di float: Scrivere una funzione che calcola la media di tutti gli elementi in un array di numeri float.
float mediaArray(float array[], int dimensione) {
float somma = 0;
for (int i = 0; i < dimensione; i++) {
somma += array[i];
}
return somma / dimensione;
}
15. Funzione di conteggio delle parole in una stringa: Scrivere una funzione che conta il numero di parole in una stringa passata come parametro.
int contaParole(std::string stringa) {
int contatoreParole = 0;
bool inParola = false;
for (char c : stringa) {
if (isspace(c)) {
inParola = false;
} else if (!inParola) {
inParola = true;
contatoreParole++;
}
}
if (inParola) contatoreParole++; // Ultima parola
return contatoreParole;
}
16. Funzione di controllo se una stringa è palindroma: Scrivere una funzione che verifica se una stringa passata come parametro è una palindroma (si legge uguale da entrambi i lati).
bool isPalindroma(std::string stringa) {
std::string stringaInversa;
for (char c : stringa) {
stringaInversa.insert(0, c);
}
return stringa == stringaInversa;
}
17. Funzione di conversione da maiuscolo a minuscolo e viceversa: Scrivere due funzioni che convertono una stringa intera da maiuscolo a minuscolo e viceversa.
std::string maiuscoloToMinuscolo(std::string stringa) {
for (char &c : stringa) {
c = tolower(c);
}
return stringa;
}
std::string minuscoloAMaiuscolo(std::string stringa) {
for (char &c : stringa) {
c = toupper(c);
}
return stringa;
}
18. Funzione di calcolo del MCD tra due numeri: Scrivere una funzione ricorsiva per calcolare il Massimo Comun Divisore (MCD) tra due numeri interi.
int MCD(int a, int b) {
if (b == 0) return a;
else return MCD(b, a % b);
}
19. Funzione di calcolo del MCA tra due numeri: Scrivere una funzione per calcolare il Minimo Comun Multiplo (mcm) tra due numeri interi.
int mcm(int a, int b) {
return (a * b) / MCD(a, b);
}