Esercizi C/C++ per principianti

Calcolare il fattoriale con un ciclo in C e C++

In questa lezione calcolerai il fattoriale di un numero con un ciclo e salverai il risultato in un tipo abbastanza grande.

Introduzione

Il fattoriale di n, scritto n!, è il prodotto di tutti gli interi positivi da 1 a n; per esempio 6! = 720. Il fattoriale cresce molto in fretta, quindi serve un tipo grande, come unsigned long long, per evitare l'overflow.

Punti importanti

  • Attiva gli avvisi del compilatore (compiler warning) e correggili tutti.
  • Comprendi bene il tipo di dato e la durata (lifetime) di ogni valore.
  • Controlla sempre i dati in ingresso e i limiti degli indici degli array.

Esempi di codice C e C++

C
Esegui →
main.c
#include <stdio.h>
int main(void) {
    int number = 6; unsigned long long result = 1;
    // Multiply each value into the running product.
    for (int value = 2; value <= number; ++value) result *= value;
    printf("%d! = %llu\n", number, result);
}
Risultato dell'esecuzione
6! = 720
C++
Esegui →
main.cpp
#include <iostream>
int main() {
    int number = 6; unsigned long long result = 1;
    // Multiply each value into the running product.
    for (int value = 2; value <= number; ++value) result *= value;
    std::cout << number << "! = " << result << '\n';
}
Risultato dell'esecuzione
6! = 720

Confronto tra C e C++

La variabile result parte da 1, così 0! e 1! restano corretti senza casi speciali. Il ciclo moltiplica result per ogni numero da 2 a number. Lo specificatore %llu di printf serve per stampare valori di tipo unsigned long long.

C

C usa piccole funzioni procedurali e mostra apertamente come i dati sono rappresentati in memoria.

C++

C++ continua a permettere il lavoro a basso livello, ma aggiunge tipi di libreria e astrazioni più sicure.

Esercizi di approfondimento

Esegui entrambe le versioni e poi modifica il codice per osservare la differenza di sicurezza che offre ciascun linguaggio.

  • Prova input non validi e valori ai limiti.
  • Compila con i flag -Wall -Wextra -Wpedantic per attivare più avvisi.
  • Sposta le dichiarazioni condivise in un file header e l'implementazione in un altro file.

Esercitati con una sfida

Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.

Tutte le sfide