· 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.

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);
}
    Back to Blog

    Related Posts

    View All Posts »
    50 Esercizi sul costrutto if/if..else/elif

    50 Esercizi sul costrutto if/if..else/elif

    Ecco una lista di 50 esercizi sul costrutto condizionale `if`, `if..else` e `elif` in C. Questi esercizi ti aiuteranno a capire come funzionano i costrutti condizionali e a scrivere algoritmi che fanno uso di essi. Prova a risolvere questi esercizi da solo e controlla le soluzioni per verificare la tua comprensione.

    Struct in C++

    Struct in C++

    Le struct rappresentano un elemento fondamentale del linguaggio C++, offrendo un modo flessibile e strutturato per gestire dati complessi. La loro semplicità d'uso e i numerosi vantaggi le rendono uno strumento prezioso per qualsiasi programmatore C++.