0% ont trouvé ce document utile (0 vote)
42 vues5 pages

Solution TP3

Transféré par

Oussama Elkaissi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
42 vues5 pages

Solution TP3

Transféré par

Oussama Elkaissi
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Solution TP3

Exercice 1

#include <stdio.h>
#include<conio.h>
main()
{
int N; /* La donnée */
int I; /* Le compteur */
double FACT; /* La factorielle N! - Type double à cause de la grandeur du résultat. */

// teste de la valeur saisie : doit être positive


do
{
printf("Entrez un entier positif : ");
scanf("%d", &N);
}while (N<0);

/* en utilisant la boucle while*/


/* Pour N=0, le résultat sera automatiquement 0!=1 */
I=1;
FACT=1;
while (I<=N)
{
FACT*=I;
I++;
}

printf ("Methode 1 : %d! = %.1f\n", N, FACT);

/* en utilisant la boucle for*/


/* Pour N=0, le résultat sera automatiquement 0!=1 */

for (FACT=1.0, I=1 ; I<=N ; I++)


FACT*=I;
printf ("\nMethode 1 : %d! = %.1f\n", N, FACT);
getch();
}

Exercice 2

a) while

#include <stdio.h>
#include<conio.h>
main()
{
int N; /* nombre de données */

exosup.com page facebook


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("Entrez le nombre %d : ", 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 %.2f\n", N, (float)SOM/N);
getch() ;
}

b) do-while

#include <stdio.h>
#include<conio.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("Entrez le nombre %d : ", I);
scanf("%d", &NOMB);
SOM += NOMB;
PROD *= NOMB;
I++;
}while(I<=N);

exosup.com page facebook


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 %.2f\n", N, (float)SOM/N);
getch();
}
c) for

#include <stdio.h>
#include<conio.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);

for (SOM=0, PROD=1, I=1 ; I<=N ; I++)


{
printf("Entrez le nombre %d : ", 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 %.2f\n", N, (float)SOM/N);
getch();
}

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.

Exercice 3

#include <stdio.h>
#include<conio.h>

main()
{
int N; /* nombre de termes à calculer */
int I; /* compteur pour la boucle */
float SOM; /* Type float à cause de la précision du résultat. */

exosup.com page facebook


do
{
printf ("Nombre de termes: ");
scanf ("%d", &N);
}while (N<1);

for (SOM=0, I=1 ; I<=N ; I++)


SOM += (float)1/I;
printf("La somme des %d premiers termes de la serie harmonique est %f \n", N, SOM);
getch();
}

Exercice 4

#include <stdio.h>
#include<conio.h>

main()
{
int X; /* Le chiffre courant */
int N=0; /* Le compteur des données */
int SOM=0; /* La somme actuelle */
long PROD=1; /* Le produit actuel - Type long à */
/* cause de la grandeur du résultat. */

do
{
/* Saisie des données */
printf("Entrez le chiffre %d: ", (N+1));
scanf("%d", &X);
if (X<0||X>9)
printf("\a");

else if (X)
{
N++;
SOM+=X;
PROD*=X;
}

} while(X);

printf("La somme des chiffres est %d \n", SOM);


printf("Le produit des chiffres est %ld\n", PROD);
printf("La moyenne des chiffres est %f \n", (float)SOM/N);

getch();
}

exosup.com page facebook


Exercice 5

#include <stdio.h>
#include<conio.h>

main()
{
int U1, U2, UN; /* pour parcourir la suite */
int N; /* rang du terme demandé */
int I; /* compteur pour la boucle */
do
{
printf("Rang du terme demandé : ");
scanf("%d", &N);
}while(N<1);

U1=U2=1; /* Initialisation des deux premiers termes */


if (N==1)
UN=U1;
else if (N==2)
UN=U2;
else
{
for (I=3 ; I<=N ; I++)
{
UN = U1+U2;
U1 = U2;
U2 = UN;
}
}
printf("Valeur du terme de rang %d : %d\n", N, UN);
getch();
}

/*
Rang et terme maximal calculable en utilisant les déclarations :
int U1, U2, UN; (spéc. de format : %d) U23 = 28657
long U1, U2, UN; (spéc. de format : %ld) U46 = 1836311903
double U1, U2, UN; (spéc. de format : %e) U1476 = 1.306989e308
long double U1, U2, UN; (spéc. de format : %Le) U23601 = 9.285655e4931 */

exosup.com page facebook

Vous aimerez peut-être aussi