une Base Solide en Programmation

C++/Java/Delphi/Assembleur
 
AccueilPortailFAQRechercherS'enregistrerMembresGroupesConnexion

Partagez | 
 

 La 1ere partie de la solution de la série03

Aller en bas 
AuteurMessage
Asma
soldat
soldat


Féminin
Nombre de messages : 19
Age : 31
Localisation : el attaf
Loisirs : lecture
Date d'inscription : 17/05/2007

MessageSujet: 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éinitialisation

de variables, nous avons le choix entre while et do - while.

Comme l'introduction du nombre de données doit toujours être

exécuté (au moins une fois), le plus naturel sera l'utilisation

de 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 4
Calculez 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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Benayada Houari
Administrateur
Administrateur
avatar

Masculin
Nombre de messages : 89
Age : 32
Localisation : Chlef
Loisirs : Sport
Date d'inscription : 14/03/2007

MessageSujet: Question?   Mar 28 Aoû - 21:31

include quoi?
Ou est stdio.h
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Asma
soldat
soldat


Féminin
Nombre de messages : 19
Age : 31
Localisation : el attaf
Loisirs : lecture
Date d'inscription : 17/05/2007

MessageSujet: 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?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: La 1ere partie de la solution de la série03   

Revenir en haut Aller en bas
 
La 1ere partie de la solution de la série03
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Solution qui bloque les virus avant qu’ils ne se propagent
» livraison des LS150 impossible, solution de remplacement ?
» définir une résolution d'écran pour chaque compte utilisateur
» RPGMAKERVXACE! écran titre nouvelle partie ect...
» Supprimer une partie de trace

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
une Base Solide en Programmation :: HBPCCLUB ACADEMY :: C :: EXERCICES-
Sauter vers: