a) en utilisant while,
#include <stdio.h> main() { int N; /* nombre de données */ int NOMB; /* nombre courant */ int I; /* compteur */ long SOM; /* la somme des nombres entrés */ double PROD; /* le produit des nombres entrés */ printf("Nombre de données : "); scanf("%d", &N); SOM=0; PROD=1; I=1; while(I<=N) { printf("%d. nombre : ", I); scanf("%d", &NOMB); SOM += NOMB; PROD *= NOMB; I++; } printf("La somme des %d nombres est %ld \n", N, SOM); printf("Le produit des %d nombres est %.0f\n", N, PROD); printf("La moyenne des %d nombres est %.4f\n", N, (float)SOM/N); return 0; }
b) en utilisant do – while,
#include <stdio.h> main() { int N; /* nombre de données */ int NOMB; /* nombre courant */ int I; /* compteur */ long SOM; /* la somme des nombres entrés */ double PROD; /* le produit des nombres entrés */ printf("Nombre de données : "); scanf("%d", &N); SOM=0; PROD=1; I=1; do { printf("%d. nombre : ", I); scanf("%d", &NOMB); SOM += NOMB; PROD *= NOMB; I++; } while(I<=N); printf("La somme des %d nombres est %ld \n", N, SOM); printf("Le produit des %d nombres est %.0f\n", N, PROD); printf("La moyenne des %d nombres est %.4f\n", N, (float)SOM/N); return 0; }
c) en utilisant for.
main() { int N; /* nombre de données */ int NOMB; /* nombre courant */ int I; /* compteur */ long SOM; /* la somme des nombres entrés */ double PROD; /* le produit des nombres entrés */ printf("Nombre de données : "); scanf("%d", &N); for (SOM=0, PROD=1, I=1 ; I<=N ; I++) { printf("%d. nombre : ", I); scanf("%d", &NOMB); SOM += NOMB; PROD *= NOMB; } printf("La somme des %d nombres est %ld \n", N, SOM); printf("Le produit des %d nombres est %.0f\n", N, PROD); printf("La moyenne des %d nombres est %.4f\n", N, (float)SOM/N); return 0; }
d) Laquelle des trois variantes est la plus naturelle pour ce problème?
La structure for est la plus compacte et celle qui exprime le mieux l’idée de l’algorithme. D’autre part, elle permet d’intégrer très confortablement l’initialisation et l’incrémentation des variables dans la structure.
Algorithme exercices