Asma soldat
Nombre de messages : 19 Age : 36 Localisation : el attaf Loisirs : lecture Date d'inscription : 17/05/2007
| Sujet: La 1ere partie de la solution de la série03 Lun 27 Aoû - 19:52 | |
| Exercice 1 Ecrivez un programme qui lit N nombres entiers au clavier et qui affiche leur somme, leur produit et leur moyenne. Choisissez un type approprié pour les valeurs à afficher. Le nombre N est à entrer au clavier. Résolvez ce problème, a) en utilisant while, b) en utilisant do - while, c) en utilisant for. d) Laquelle des trois variantes est la plus naturelle pour ce problème? - Code:
-
/* 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 %.0fn", N, PROD);
printf("La moyenne des %d nombres est %.4fn", N, (float)SOM/N);
return 0;
}
la partie -b- :en utilisant do…….while :SOM=0; PROD=1; I=1; do { printf("%d. nombre : ", I); scanf("%d", &NOMB); SOM += NOMB; PROD *= NOMB; I++; } while(I<=N);la partie –c- :en utilisant for:for (SOM=0, PROD=1, I=1 ; I<=N ; I++) { printf("%d. nombre : ", I); scanf("%d", &NOMB); SOM += NOMB; PROD *= NOMB; }Exercice 2 :Complétez la 'meilleure' des trois versions de l'exercice 1: Répétez l'introduction du nombre N jusqu'à ce que N ait une valeur entre 1 et 15. Quelle structure répétitive utilisez-vous? Pourquoi?La solution :-- remplacez les lignes suivants :/*printf("Nombre de données : "); scanf("%d", &N);*/ par :/*do { printf("Nombre de données : "); scanf("%d", &N); } while(N<1 || N>15);*/****Quelle structure répétitive utilisez-vous? Pourquoi? Comme il n'y pas d'initialisation ni de réinitialisationde variables, nous avons le choix entre while et do - while.Comme l'introduction du nombre de données doit toujours êtreexécuté (au moins une fois), le plus naturel sera l'utilisationde la structure do - while.Exercice 3:Calculez par des soustractions successives le quotient entier et le reste de la division entière de deux entiers entrés au clavier.[/size] la solution: - Code:
-
#include<stdio.h> main() { int NUM; /* numérateur de la division entière */ int DEN; /* dénominateur de la division entière */ int DIV; /* résultat de la division entière */ int RES; /* reste de la division entière */ printf("Introduisez le numérateur : "); scanf("%d", &NUM); printf("Introduisez le dénominateur : "); scanf("%d", &DEN); RES=NUM; DIV=0; while(RES>=DEN) { RES-=DEN; DIV++; } /* ou mieux encore : */ /* for (RES=NUM, DIV=0 ; RES>=DEN ; DIV++) RES-=DEN; */ printf(" %d divisé par %d est %d reste %dn", NUM, DEN, DIV, RES); return 0; }
Exercice 4Calculez la factorielle N! = 1*2*3...(N-1)N d'un entier naturel N en respectant que 0!=1. a) Utilisez while, b) Utilisez for.la solution: - Code:
-
#include<stdio.h> main() //ajoutez et supprimer les comentaires { int N; /* La donnée */ int I; /* Le compteur */ double FACT; /* La factorielle N! - Type double à */ /* cause de la grandeur du résultat. */ do { printf("Entrez un entier naturel : "); scanf("%d", &N); } while (N<0);
/* a */ /* Pour N=0, le résultat sera automatiquement 0!=1 */ I=1; FACT=1; while (I<=N) { FACT*=I; I++; }
/* b */ /* Pour N=0, le résultat sera automatiquement 0!=1 */ /* for (FACT=1.0, I=1 ; I<=N ; I++) FACT*=I; */ printf ("%d! = %.0fn", N, FACT); return 0; }
Exercice 5 Calculez par multiplications successives XN de deux entiers naturels X et N entrés au clavier la solution: - Code:
-
#include<stdio.h> main() { int X, N; /* Les données */ int I; /* Le compteur */ double RESU; /* Type double à cause de la */ /* grandeur du résultat. */ do { printf("Entrez l'entier naturel X : "); scanf("%d", &X); } while (X<0); do { printf("Entrez l'exposant N : "); scanf("%d", &N); } while (N<0);
/* Pour N=0, le résultat sera automatiquement X^0=1 */ for (RESU=1.0, I=1 ; I<=N ; I++) RESU*=X;
/* Attention: Pour X=0 et N=0 , 0^0 n'est pas défini */ if (N==0 && X==0) printf("zéro exposant zéro n'est pas défini !n"); else printf("Résultat : %d ^ %d = %.0fn", X, N, RESU); return 0; }
Dernière édition par le Mar 28 Aoû - 22:06, édité 2 fois | |
|
Benayada Houari Administrateur
Nombre de messages : 89 Age : 37 Localisation : Chlef Loisirs : Sport Date d'inscription : 14/03/2007
| Sujet: Question? Mar 28 Aoû - 21:31 | |
| include quoi? Ou est stdio.h | |
|
Asma soldat
Nombre de messages : 19 Age : 36 Localisation : el attaf Loisirs : lecture Date d'inscription : 17/05/2007
| Sujet: Re: La 1ere partie de la solution de la série03 Mar 28 Aoû - 23:02 | |
| Merci pour la remarque; avant d'envoyer le code il y avait <stdio.h> mais quand je l'ai envoyé il s'est effacé et je ne sais pas pourquoi? | |
|
Contenu sponsorisé
| Sujet: Re: La 1ere partie de la solution de la série03 | |
| |
|