Vous êtes sur la page 1sur 8

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

Correction
Exercice1 : Calcul de salaire brut et net d’un employé
Algorithme CalculSalaire #include <stdio.h>
Constantes int main() {
TAUX_IMPOSITION = 0.25 // Constante pour le taux d'imposition
Variables const float TAUX_IMPOSITION =0.25;
heuresTravaillees, salaireHoraireBrut, salaireBrut, salaireNet, charges // Déclaration des variables
: Réel float heuresTravaillees, salaireHoraireBrut, salaireBrut, salaireNet,
Début charges;
Ecrire("Entrez le nombre d'heures travaillées ce mois : ") /* Demander à l'utilisateur le nombre d'heures travaillées et le salaire
Lire(heuresTravaillees) horaire brut*/
Ecrire("Entrez le salaire horaire brut : ") printf("Entrez le nombre d'heures travaill\202es ce mois : ");
Lire(salaireHoraireBrut) scanf("%f", &heuresTravaillees);
salaireBrut <- heuresTravaillees * salaireHoraireBrut printf("Entrez le salaire horaire brut : ");
charges <- salaireBrut * TAUX_IMPOSITION scanf("%f", &salaireHoraireBrut);
salaireNet <- salaireBrut - charges // Calcul du salaire brut
Ecrire("Salaire brut mensuel : " , salaireBrut) salaireBrut = heuresTravaillees * salaireHoraireBrut;
Ecrire("Salaire net mensuel : " , salaireNet) // Calcul du montant des charges
Fin charges = salaireBrut * TAUX_IMPOSITION;

Page 1 sur 8
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 du salaire net


salaireNet = salaireBrut - charges;
// Affichage des résultats
printf("Salaire brut mensuel : %.2f\n", salaireBrut);
printf("Salaire net mensuel : %.2f\n", salaireNet);
return 0;
}

Page 2 sur 8
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

Exercice2 : Algorithme de Syracuse

Algorithme Syracuse #include <stdio.h>


Variables int main() {
n, count : Entier int n;
Début int count = 0;
n <- 0 // Saisie de l'entier n
count <- 0 do {
Répétez printf("Entrer un entier (strictement positif) : ");
Ecrire("Entrer un entier (strictement positif) : ") scanf("%d", &n);
Lire (n) } while (n <= 0);
Jusqu’à (n > 0) printf("%d ", n);
Ecrire(n , " ") /*Tant que n n'est pas égal à 1, appliquer la transformation et afficher
Tant que (n <> 1) Faire les valeurs*/
Si (n % 2 == 0) Alors while (n != 1) {
n <- n / 2 if (n % 2 == 0) {
Sinon n = n / 2;
n <- 3 * n + 1 } else {
Fin Si n = 3 * n + 1;
Ecrire(n , " ") }

Page 3 sur 8
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

count <- count + 1


Fin Tant que printf("%d ", n);
Ecrire("Le nombre de transformations nécessaires avant d'arriver à 1 count++;
est : " , count) }
Fin // Afficher le nombre de transformations nécessaires
printf("\nLe nombre de transformation n\202cessaire avant
d'arriver \205 1 est : %d\n", count);
return 0;
}

Exercice3 : Montant de participation au prix du repas des employés

Algorithme Restaurant #include<stdio.h>


Variables #include<stdlib.h> //Pour utiliser exit
s, m, pa, pr : Réel int main(){
nbEnf : Entier float s, m, pa, pr;
e : Caractère int nbEnf;
Début char e;
Ecrire("Etat Civil (C pour Celibataire et M pour Marie): ") printf("Etat Civil (C pour Celibataire et M pour Marie): ");
Lire(e) scanf("%c",&e);

Page 4 sur 8
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

Si (e = 'C' ou e = 'c') Alors


pa <- 0.2 if(e == 'C' || e == 'c'){
Sinon Si (e = 'M' ou e = 'm') Alors pa = 0.2;
pa <- 0.25 }
Ecrire("Entrer le nombre d'enfants: ") else if(e == 'M' || e == 'm'){
Lire(nbEnf) pa = 0.25;
pa <- pa + nbEnf * 0.1 printf("Entrer le nombre d'enfants: ");
Sinon scanf("%d",&nbEnf);
Ecrire("Etat civil indefini!!") pa += nbEnf * 0.1;
Terminer Programme }
Fin Si else{
printf("\nEtat civil indefini!!\n");
Ecrire("Entrer le Salaire : ") exit(EXIT_FAILURE); //On quitte le programme
Lire(s) }
Ecrire("Entrer le prix du repas: ") printf("Entrer le Salaire : ");
Lire(pr) scanf("%f",&s);
Si (s < 5000) Alors printf("Entrer le prix du repas: ");
pa <- pa + 0.1 scanf("%f",&pr);
Fin Si //Test sur le salaire
Si (pa > 0.5) Alors if(s < 5000){

Page 5 sur 8
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

pa <- 0.5 pa += 0.1;


Fin Si }
m <- pa * pr //Plafonnement
Ecrire("- Le prix du repas : " , pr) if(pa > 0.5){
Ecrire("- Participation du patron : " , (pa * 100) , "%") pa = 0.5;
Ecrire("- Le Montant de participation : " , m) }
Ecrire("- Le prix à payer : " , (pr - m)) m = pa * pr;
Fin printf("\n- Le prix du repas : %.2f\n", pr);
printf("- Participation du patron : %.2f%%\n", pa * 100); /* %% Pour
afficher le symbole de pourcentage */
printf("- Le Montant de participation : %.2f\n", m);
printf("- Le prix a payer : %.2f\n", pr - m);
return 0;
}

Page 6 sur 8
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

Exercice4 : Que sera le résultat d’exécution des programmes suivants :

1) 3)
int i = 10; int i = 0;
for(i = 0;i < 10; i++) while(i < 10);
printf("%d\n", i); i++;
Affiche les nombres de 0 à 9 (inclus) à la sortie printf("%d\n", i);
standard, chaque nombre étant suivi d'un retour à la boucle infinite
ligne. Notez bien la présence d'un point-virgule à la fin des
parenthèses de la boucle while, ce qui produira une
boucle infinie puisque i sera toujours inférieur à 10.
Sans le point-virgule, ce programme affichera le nombre
10.
2) 4)
int i = 0, j = 10; int i = 1;
do switch(i)
{ {
printf("%d\n", i); case 0 : puts("0");
i++; case 1 : puts("1");
j = i + j; case 2 : puts("2");
} while((i < 10) && (j <20)); default : printf("Good By");
Sortie du programme }
0 Sortie du programme
1 1
2 2
3 Good By
Lorsque i est égal à 1, il exécute la case case 1 et
affiche "1", puis passe à la case case 2 et affiche "2".
En l'absence d'instructions break, il continue d'exécuter

Page 7 sur 8
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

toutes les cases suivantes jusqu'à ce qu'il atteigne la


clause default, où il affiche "Good By".

5)
int i;
for(i = 0;i < 10; i++)
;
printf("%d",i);
Sortie du programme
Affiche la valeur de la variable i après la boucle.
Cependant, il y a un point-virgule (;) vide après la
boucle for, ce qui signifie que la boucle est vide et ne
fait rien.
La boucle for s'exécute de 0 à 9 (10 itérations au total),
mais comme il n'y a pas d'instructions à l'intérieur de
la boucle, elle ne fait rien d'autre que d'incrémenter
i.
Donc, après l'exécution de la boucle, la valeur de i sera
10. Le programme affichera donc "10".
Haut du formulaire

Page 8 sur 8

Vous aimerez peut-être aussi