Vérifier si un Nombre est un Nombre d'Armstrong en C

CBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, nous apprendrons à vérifier si un nombre donné est un nombre d'Armstrong en utilisant un programme C. Nous lirons d'abord une entrée entière de l'utilisateur, puis calculerons la somme de chaque chiffre élevé à la puissance du nombre total de chiffres, et enfin afficherons si le nombre est un nombre d'Armstrong ou non.

Le programme guidera l'utilisateur à travers le processus étape par étape, de la lecture de l'entrée à la détermination si le nombre est un nombre d'Armstrong.

Lecture d'un Entier

Dans cette étape, nous allons apprendre à lire une entrée entière de l'utilisateur dans un programme C pour vérifier si c'est un nombre d'Armstrong.

Tout d'abord, créons un nouveau fichier C dans le répertoire du projet :

cd ~/project
nano armstrong.c

Maintenant, écrivons le code initial pour lire un entier :

#include <stdio.h>

int main() {
    int number;

    // Demander à l'utilisateur d'entrer un nombre
    printf("Entrez un nombre pour vérifier s'il est un nombre d'Armstrong : ");

    // Lire l'entrée entière
    scanf("%d", &number);

    // Afficher le nombre entré pour vérifier l'entrée
    printf("Vous avez entré : %d\n", number);

    return 0;
}

Compilons et exécutons le programme :

gcc armstrong.c -o armstrong
./armstrong

Sortie d'exemple :

Entrez un nombre pour vérifier s'il est un nombre d'Armstrong : 153
Vous avez entré : 153

Décomposons le code :

  • scanf("%d", &number) lit un entier à partir de l'entrée utilisateur
  • &number passe l'adresse mémoire de la variable number
  • printf() est utilisé pour demander à l'utilisateur et afficher le nombre entré

Calculer la Somme de Chaque Chiffre Élevé à la Puissance du Nombre de Chiffres

Dans cette étape, nous allons modifier notre programme précédent pour calculer la somme de chaque chiffre élevé à la puissance du nombre total de chiffres.

Ouvrez le fichier armstrong.c :

cd ~/project
nano armstrong.c

Mettez à jour le code pour calculer la somme des chiffres :

#include <stdio.h>
#include <math.h>

int main() {
    int number, originalNumber, remainder, digitCount = 0;
    long long digitSum = 0;

    // Demander à l'utilisateur d'entrer un nombre
    printf("Entrez un nombre pour vérifier s'il est un nombre d'Armstrong : ");
    scanf("%d", &number);

    // Stocker le nombre original pour une comparaison ultérieure
    originalNumber = number;

    // Comptez le nombre de chiffres
    while (number != 0) {
        number /= 10;
        digitCount++;
    }

    // Réinitialiser number à sa valeur originale
    number = originalNumber;

    // Calculer la somme de chaque chiffre élevé à la puissance du nombre de chiffres
    while (number != 0) {
        remainder = number % 10;
        digitSum += pow(remainder, digitCount);
        number /= 10;
    }

    // Afficher les résultats
    printf("Nombre de chiffres : %d\n", digitCount);
    printf("Somme des chiffres élevés à la puissance : %lld\n", digitSum);

    return 0;
}

Compilez le programme avec la bibliothèque mathématique :

gcc armstrong.c -o armstrong -lm
./armstrong

Sortie d'exemple :

Entrez un nombre pour vérifier s'il est un nombre d'Armstrong : 153
Nombre de chiffres : 3
Somme des chiffres élevés à la puissance : 153

Concepts clés expliqués :

  • digitCount suit le nombre de chiffres
  • pow(remainder, digitCount) élève chaque chiffre à la puissance du nombre total de chiffres
  • number % 10 extrait le dernier chiffre
  • number /= 10 supprime le dernier chiffre à chaque itération
  • long long utilisé pour gérer les sommes de chiffres potentiellement grandes

Afficher si le Nombre est un Nombre d'Armstrong ou Non

Dans cette étape, nous allons compléter notre vérificateur de nombres d'Armstrong en comparant le nombre original à la somme des chiffres calculée.

Ouvrez le fichier armstrong.c :

cd ~/project
nano armstrong.c

Mettez à jour le code pour déterminer et afficher si le nombre est un nombre d'Armstrong :

#include <stdio.h>
#include <math.h>

int main() {
    int number, originalNumber, remainder, digitCount = 0;
    long long digitSum = 0;

    // Demander à l'utilisateur d'entrer un nombre
    printf("Entrez un nombre pour vérifier s'il est un nombre d'Armstrong : ");
    scanf("%d", &number);

    // Stocker le nombre original pour une comparaison ultérieure
    originalNumber = number;

    // Comptez le nombre de chiffres
    while (number != 0) {
        number /= 10;
        digitCount++;
    }

    // Réinitialiser number à sa valeur originale
    number = originalNumber;

    // Calculer la somme de chaque chiffre élevé à la puissance du nombre de chiffres
    while (number != 0) {
        remainder = number % 10;
        digitSum += pow(remainder, digitCount);
        number /= 10;
    }

    // Vérifier si le nombre est un nombre d'Armstrong
    if (digitSum == originalNumber) {
        printf("%d est un nombre d'Armstrong.\n", originalNumber);
    } else {
        printf("%d n'est pas un nombre d'Armstrong.\n", originalNumber);
    }

    return 0;
}

Compilez le programme :

gcc armstrong.c -o armstrong -lm
./armstrong

Exemples de sorties :

Entrez un nombre pour vérifier s'il est un nombre d'Armstrong : 153
153 est un nombre d'Armstrong.

Entrez un nombre pour vérifier s'il est un nombre d'Armstrong : 154
154 n'est pas un nombre d'Armstrong.

Concepts clés expliqués :

  • Comparer digitSum avec originalNumber
  • Si elles sont égales, c'est un nombre d'Armstrong
  • Le programme gère différents cas d'entrée

Résumé

Dans ce laboratoire, vous apprendrez à lire une entrée entière de l'utilisateur, à calculer la somme de chaque chiffre élevé à la puissance du nombre total de chiffres et à déterminer si le nombre est un nombre d'Armstrong. La première étape consiste à demander à l'utilisateur d'entrer un nombre et à le stocker dans une variable. La deuxième étape se concentre sur le calcul de la somme de chaque chiffre élevé à la puissance du nombre total de chiffres, qui est ensuite comparée au nombre original pour vérifier s'il s'agit d'un nombre d'Armstrong.