Vous êtes sur la page 1sur 3

- Instructions : lire, ecrire, , Si….

Sinon
Problème 1 :
Etant donnée deux nombres entiers.
1- Ecrire un algorithme qui calcul la valeur de z selon les cas suivants :
- Si non(x≥y) : z contient la valeur de y
- Si non(y≥x) : z contient la valeur de x.
2- Que représente la valeur de z.
3- Que va-t-il contenir z dans le cas où x=y :
a) x
b) y
c) Aucun des deux
Solution :
1. Algorithme maximum ;
Variables x, y, z : réel ;
Début
écrire(“donner 2 nombres réels“) ; lire(x, y) ;
si (non(x≥y)) alors zy ; finsi ; {ou alors : si (x<y) alors zy ; finsi ; }
si (non (y≥x)) alors zx ; finsi ; {ou alors : si (y<x) alors zx ; finsi ; }
Ecrire (“z = “, z) ;
Fin
2. z contient le maximum entre x et y.
3. si x=y alors la condition (non(x≥y)) serait fausse, et de même pour la deuxième condition
(non (y≥x)) et donc z n’aura pas de valeur (possibilité (c)), car on n’exécute pas l’instruction :
zy ni l’instruction : zx.

Problème 2 :
Etant donnée une équation du premier degrée donnée par a X + b =0.
Ecrire un algorithme qui résout dans R cette équation.
Solution :
On sait que dans une équation de la forme ax+b=0, a et b représentent des données, et les
solutions de cette équation sont les valeurs que prend x satisfaisant cette équation. Trois cas
sont possibles :
Cas 1 : si a<>0 alors il y a une seule solution : -b/a
Cas 2 : a=0 et b=0, l’équation devient 0=0 et cette équation est satisfaite pour tous les valeurs
dans 𝓡, car la valeur de x n’intervient pas et l’équation est satisfaite pour toute valeur de x.
Cas 3 : a=0 et b<>0, l’équation devient b=0 et cette équation n’est jamais satisfaite quel que
soit la valeur de x, donc pas de solutions dans 𝓡.

Algorithme Equation1;
Variable a, b, x : réel;
Début
ecrire (“donner les valeurs de a et b“); lire(a, b);

si(a<>0) alors x-b/a; ecrire(“x=“, x);


sinon si (b=0) alors {cas : a=0 et b=0}
Ecrire(“l’ensemble des nombres réels“);
sinon {cas : a=0 et b<>0}
Ecrire(“pas de solutions dans R“);
finsi;
finsi;
fin
Problème 3 :
Etant donné un cercle donné par son rayon R et un carré donné par son coté L.
Ecrire un algorithme qui détermine la forme géométrique ayant la plus grande surface.
Solution :
Algorithme surface ;
Variable R, L, Scer, Scar : réel ;
Début
Ecrire(“Donner la valeur de R et L“) ; lire(R, L) ;

Scer3.1416 * R↑2;
ScarL*L;

Si(Scer>Scar) alors Ecrire(“la surface la plus grande est celle du cercle“);


Sinon Ecrire(“la surface la plus grande est celle du carré“);
Finsi;
Fin

Problème 4 :
1) Un avion quitte un aéroport A à un horaire h1(heures), m1(minutes) et s1(secondes) et arrive
à l’aéroport B à un autre horaire du même jour h2(heures), m2(minutes) et s2(secondes). Ecrire
un algorithme qui lit les deux horaires puis affiche la durée du vol en heures, minutes et
secondes.
2) Que faut-t-il changer si l’avion peut arriver un jour après.
Solution :
1) On suppose que les deux horaires sont données sous forme de trois nombres représentants
respectivement les heures, les minutes, et les secondes, tel que le deuxième horaire est
supérieur par rapport au premier.
Par exemple : si on a :
h1=12, m1=20 et s1=25
h2=19, m2=05 et s2=00
Donc : dh=6, dm=44, et ds=35

Algorithme différence;
Variable h1, m1, s1, h2, m2, s2, dh, dm, ds, dT, T1, T2 : entier ;
Début
Ecrire(“Donner le premier horaire :“) ; lire(h1, m1, s1) ;
Ecrire(“Donner le deuxième horaire :“) ; lire(h2, m2, s2) ;

{Méthode 1 : c’est la méthode la plus logique que peut adopter un être humain pour résoudre
manuellement ce problème, on commence par voir si on peut soustraire les secondes du premier
horaire à partir des secondes du deuxième horaire, c’est lorsque s2 est ≥ à s1, si c’est le cas on le
fait, sinon on prête 60 secondes à partir de m2 sous forme d’une minute, et on les ajoutent à s2 et
on soustrait 1 minute de m2}
Si(s2>=s1) alors dss2-s1;
Sinon dss2+60-s1 ; m2m2-1; {ou : m1m1+1;}
Finsi;

{de même on voie si on peut soustraire les minutes du premier horaire à partir des minutes du
deuxième horaire, c’est lorsque m2 est ≥ à m1, si c’est le cas on le fait, sinon on prête 60 minutes
à partir de h2 sous forme d’une heure, et on les ajoute à m2 et on soustrait 1 heure de h2}
Si(m2>=m1) alors dmm2-m1;
Sinon dmm2+60-m1 ; h2h2-1; {ou : h1h1+1;}
Finsi;
{Il nous reste qu’à soustraire h1 de h2 et bien sûr qu’on peut le faire car on a supposé que
deuxième horaire est supérieur au premier}
dhh2-h1;
{Méthode 2 : On soustrait s1 de s2 (ds), m1 de m2 (dm), puis h1 de h2 (dh)}
dss2-s1;
dmm2-m1;
dhh2-h1;
{certains de ces résultats (ds, dm, et dh) peuvent être négative, donc il faut les corriger :}
{si ds est négatif alors on lui ajoute 60 secondes et on soustrait 1 minute de dm}
si(ds<0) alors dsds+60; dmdm-1; finsi ;
{si dm est négatif alors on lui ajoute 60 minutes et on soustrait 1 heure de dh}
si(dm<0) alors dmdm+60; dhdh-1; finsi ;
{dh ne peut pas être négatif car h2 est ≥ h1}
{Méthode 3 : c’est la méthode la plus simple, on transforme le premier et le second horaire en
secondes dans T1 et T2. On fait la soustraction de T1 à partir de T2, on aura la différence en
secondes. Et enfin il nous reste que reproduire la différence des horaires sous forme d’heures,
minutes et secondes (selon la méthode vue déjà en cours)}
T2h2*3600+m2*60+s2; {ou alors :}
T1h1*3600+m1*60+s1; T2h2*3600+m2*60+s2;
dTT2-T1; T1h1*3600+m1*60+s1;
dhdT div 3600; dTT2-T1;
dT dT mod 3600 ; dhdT div 3600;
dmdT div 60; dm(dT mod 3600) div 60;
ds dT mod 60 ; ds(dT mod 3600) mod 60;
Ecrire (“durée =“, dh, “ heures, “, dm, “ minutes, “, ds, “secondes“) ;
Fin

2) il suffit d’ajouter l’instruction suivante juste avant le dernier affichage :


Si(dh<0) alors dhdh+24 ; finsi ;

******************************

Essayer de dérouler ces trois solutions pour les horaires :


h1=21, m1=30, et s1=40

Et : h2=22, m2=05, et s2=10

Vous devez trouver le même résultat pour les trois solutions :


Le résultat est : dh= 0, dm= 34, et ds= 30.

********Bon courage*********

Vous aimerez peut-être aussi