Vous êtes sur la page 1sur 7

Matière : Algorithmes et Structures de Données I

Classes : L _BD_1, L_GLSI_1 ET L_IMM_1


Enseignant responsable : Mr ben Rkaya Moez

CAHIER D’EXERCICES 2
Les structures alternatives et répétitives
Pour tester les programmes écris ci-dessous, utilisez un compilateur en
ligne :

https://www.programiz.com/c-programming/online-compiler/
Exercice1 : Écrire un programme qui calcule et affiche la somme ainsi que la
moyenne d'une liste de n valeurs entières fournies par l'utilisateur
#include <stdio.h>
int main()
{
int i , s, valeurEntree;
int nbrRepetion;
float moyenne;
s=0;
printf("donnez svp le nombre de réptition :");
scanf("%d",&nbrRepetion);
for(i=0;i<nbrRepetion;i++)
{
printf("valeur %d svp : ", i+1);
scanf("%d",&valeurEntree) ;
s = s+valeurEntree;
}
printf("Somme = %d\n",s);
// on appelle cette technique le forçage de type ou casting
moyenne = (float)s / nbrRepetion; printf("Moyenne = %.2f",moyenne);
return 0;
}

Page 1 sur 7
Matière : Algorithmes et Structures de Données I
Classes : L _BD_1, L_GLSI_1 ET L_IMM_1
Enseignant responsable : Mr ben Rkaya Moez

Exercice 2 : Écrire un algorithme calcule et affiche la somme d'une liste de valeurs


fournies par l'utilisateur, en utilisant la valeur 0 comme indicateur de fin de la liste
(cette valeur 0 ne fait pas partie de la liste des valeurs à considérer).
#include <stdio.h>
int main()
{
int s=0, x;
int seq = 0;
do
{
printf("taper une valeur: ");
scanf("%d",&x);
s=s+x;
seq = seq +1;
} while(x!=0);
seq = seq -1;
printf("la somme des %d termes est %d\n",seq,s);
printf("la moyenne des %d termes est %.2f\n",seq,(float)s/seq);
return 0 ;
}
Exercice 3 : Ecrire un algorithme qui définit un nombre magique (un nombre secret
entre 1 et 100), et lit des entiers à l’entrée jusqu’à ce que l’utilisateur trouve ce
nombre. En lui indiquant à chaque fois s’il est en dessus ou au-dessous du nombre
magique.
#include <stdio.h>
#include <Windows.h>
#include <time.h>
int main()

Page 2 sur 7
Matière : Algorithmes et Structures de Données I
Classes : L _BD_1, L_GLSI_1 ET L_IMM_1
Enseignant responsable : Mr ben Rkaya Moez

{
int aleatoire;
const int MIN = 0, MAX = 50;
srand(time(NULL)); // Initialisation de la donnée
aleatoire = (rand() % (MAX + 1 - MIN)) + MIN;
int x;
int nbseq = 0;
do
{
printf("valeur svp : ");
scanf("%d",&x);
if(x>aleatoire)
printf("mois svp...\n");
else if (x<aleatoire)
printf("plus svp...\n");
else
printf("Exactement c'est ca !!");
nbseq = nbseq+1;
}while(x!=aleatoire);
printf("\nle nombre %d est deviné en %d coups.",x,nbseq);
return 0;
}
Améliorer le programme en limitant le nombre d’essais à 5 coups seulement
#include <stdio.h>
#include <Windows.h>
#include <time.h>
int main()
{

Page 3 sur 7
Matière : Algorithmes et Structures de Données I
Classes : L _BD_1, L_GLSI_1 ET L_IMM_1
Enseignant responsable : Mr ben Rkaya Moez

int aleatoire;
const int MIN = 0, MAX = 100;
srand(time(NULL)); // Initialisation de la donnée
aleatoire = (rand() % (MAX + 1 - MIN)) + MIN;
int x;
int nbseq = 0;
do
{
printf("valeur svp : ");
scanf("%d",&x);
if(x>aleatoire)
printf("mois svp...\n");
else if (x<aleatoire)
printf("plus svp...\n");
else
printf("Exactement c'est ca !!");
nbseq = nbseq+1;
}while(x!=aleatoire && nbseq<5);
if (x != aleatoire) { // echec
printf("Vous avez effectué 5 essais sans parvenir à deviner mon nombre.\n");
printf("Mon nombre était %d ", aleatoire);
}
else
printf("Nombre deviné en %d coups !! bravo .", nbseq);

return 0;
}

Page 4 sur 7
Matière : Algorithmes et Structures de Données I
Classes : L _BD_1, L_GLSI_1 ET L_IMM_1
Enseignant responsable : Mr ben Rkaya Moez

Exercice 4 : Ecrire un algorithme qui lit un entier puis détermine s’il est premier ou
non.
En mathématiques, les nombres premiers sont des entiers naturels supérieurs à 1
qui ont exactement deux diviseurs positifs : 1 et eux-mêmes.
#include<stdio.h>
int main()
{
int p,i,pr;
printf("Donnez un entier : ");
scanf("%d",&p);
if(p==0 || p==1)

printf("%d n'est pas premier.\n",p);


else{//début else
pr=1;
for(i=2;i<p;i++)
{
if(p%i==0)
{
pr=0;
break;
}
}
if(pr==1)
printf("%d est premier.\n",p);
else
printf("%d n'est pas premier.\n",p);
}

Page 5 sur 7
Matière : Algorithmes et Structures de Données I
Classes : L _BD_1, L_GLSI_1 ET L_IMM_1
Enseignant responsable : Mr ben Rkaya Moez

return 0;
}

Exercice5 : Créer un programme simulant un distributeur de café. Le café coûte 3


dinars.
L’utilisateur peut insérer (seulement) des pièces de 0.1, 0.2 et 0.5 dinars.
Tant que la somme insérée par l’utilisateur n’est pas égale ou supérieure à 1 euro,
il doit insérer encore des pièces.
Le distributeur rend ensuite la monnaie éventuelle. #include <stdio.h>
#include <stdio.h>

int main() {
const double prixCafe = 3.0;
double montantInsere = 0.0;

printf("Bienvenue dans le distributeur de café ! Le café coûte 3 dinars.\n");


while (montantInsere < prixCafe) {
double piece;
printf("Insérez une pièce de 0.1, 0.2 ou 0.5 dinars : ");
scanf("%lf", &piece);

if (piece == 0.1 || piece == 0.2 || piece == 0.5) {


montantInsere += piece;
printf("Montant inséré : %.1lf dinars\n", montantInsere);
} else {
printf("Pièce non valide. Veuillez insérer une pièce de 0.1, 0.2 ou 0.5
dinars.\n");
}

Page 6 sur 7
Matière : Algorithmes et Structures de Données I
Classes : L _BD_1, L_GLSI_1 ET L_IMM_1
Enseignant responsable : Mr ben Rkaya Moez

}
// Calcul de la monnaie à rendre
double monnaie = montantInsere - prixCafe;

if (monnaie > 0) {
printf("\nCafé servi ! Monnaie à rendre : %.1lf dinars\n", monnaie);
}
else {
printf("\nCafé servi ! Pas de monnaie à rendre.\n");
}
return 0;
}

Page 7 sur 7

Vous aimerez peut-être aussi