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

Solutions de Devoirs en Algorithmique

Transféré par

Aissa Haline
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)
8 vues5 pages

Solutions de Devoirs en Algorithmique

Transféré par

Aissa Haline
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

■ Solutions des Devoirs – Langage Algorithmique

Formalisme conforme au cours (mots-clés FR, flèche d’affectation, fins de blocs).

DEVOIR 1 – Programmes
Exercice 1 – Minimum de trois valeurs (sans variable intermédiaire)
PROGRAMME Min3 ;
VARIABLE A, B, C : REEL ;
DEBUT
ECRIRE('Entrez A, B, C :') ;
LIRE(A) ; LIRE(B) ; LIRE(C) ;

SI (A ≤ B) ET (A ≤ C) ALORS
ECRIRE('Minimum = ', A)
SINON SI (B ≤ A) ET (B ≤ C) ALORS
ECRIRE('Minimum = ', B)
SINON
ECRIRE('Minimum = ', C) ;
FIN SI ;
FIN.

Exercice 2 – Maximum de trois valeurs (avec MAX)


PROGRAMME Max3 ;
VARIABLE A, B, C, MAX : REEL ;
DEBUT
ECRIRE('Entrez A, B, C :') ;
LIRE(A) ; LIRE(B) ; LIRE(C) ;

MAX ← A ;
SI (B > MAX) ALORS MAX ← B ; FIN SI ;
SI (C > MAX) ALORS MAX ← C ; FIN SI ;

ECRIRE('Maximum = ', MAX) ;


FIN.

Exercice 3 – Menu d’opérations avec contrôles (sélection multiple)


PROGRAMME OperationsAB ;
VARIABLE A, B : REEL ;
CHOIX : ENTIER ;
DEBUT
ECRIRE('Entrez A puis B (A > B, A>0, B>0) :') ;
LIRE(A) ; LIRE(B) ;
SI (A ≤ 0) OU (B ≤ 0) OU (A ≤ B) ALORS
ECRIRE('Erreur : conditions non respectées (A>0, B>0, A>B).') ;
SINON
ECRIRE('Choisissez :') ;
ECRIRE('1 Addition (A + B)') ;
ECRIRE('2 Soustraction (A - B)') ;
ECRIRE('3 Multiplication (A * B)') ;
LIRE(CHOIX) ;

SELON QUE CHOIX VAUT


1 : ECRIRE('Résultat = ', A + B) ;
2 : ECRIRE('Résultat = ', A - B) ;
3 : ECRIRE('Résultat = ', A * B) ;
SINON ECRIRE('Erreur : choix invalide.') ;
FIN SELON ;
FIN SI ;
FIN.

Exercice 4 – Somme des N premiers entiers (3 variantes)


PROGRAMME Somme_POUR ;
VARIABLE N, I, SOMME : ENTIER ;
DEBUT
ECRIRE('Entrez N ≥ 0 :') ; LIRE(N) ;
SI (N < 0) ALORS ECRIRE('Erreur : N négatif.') ;
SINON
SOMME ← 0 ;
POUR I VARIANT DE 1 A N FAIRE
SOMME ← SOMME + I ;
FAIT ;
ECRIRE('Somme = ', SOMME) ;
FIN SI ;
FIN.
PROGRAMME Somme_TANT_QUE ;
VARIABLE N, I, SOMME : ENTIER ;
DEBUT
ECRIRE('Entrez N ≥ 0 :') ; LIRE(N) ;
SI (N < 0) ALORS ECRIRE('Erreur : N négatif.') ;
SINON
SOMME ← 0 ; I ← 1 ;
TANT QUE (I ≤ N) FAIRE
SOMME ← SOMME + I ;
I ← I + 1 ;
FAIT ;
ECRIRE('Somme = ', SOMME) ;
FIN SI ;
FIN.
PROGRAMME Somme_REPETER ;
VARIABLE N, I, SOMME : ENTIER ;
DEBUT
ECRIRE('Entrez N ≥ 0 :') ; LIRE(N) ;
SI (N < 0) ALORS ECRIRE('Erreur : N négatif.') ;
SINON
SOMME ← 0 ; I ← 1 ;
REPETER
SOMME ← SOMME + I ;
I ← I + 1 ;
JUSQU’A (I > N) ;
ECRIRE('Somme = ', SOMME) ;
FIN SI ;
FIN.

Exercice 5 – Factorielle N (3 variantes)


PROGRAMME Facto_POUR ;
VARIABLE N, I : ENTIER ;
FACT : ENTIER ;
DEBUT
ECRIRE('Entrez N ≥ 0 :') ; LIRE(N) ;
SI (N < 0) ALORS ECRIRE('Erreur : N négatif.') ;
SINON
FACT ← 1 ;
POUR I VARIANT DE 2 A N FAIRE
FACT ← FACT * I ;
FAIT ;
ECRIRE('N! = ', FACT) ;
FIN SI ;
FIN.
PROGRAMME Facto_TANT_QUE ;
VARIABLE N, I : ENTIER ;
FACT : ENTIER ;
DEBUT
ECRIRE('Entrez N ≥ 0 :') ; LIRE(N) ;
SI (N < 0) ALORS ECRIRE('Erreur : N négatif.') ;
SINON
FACT ← 1 ; I ← 2 ;
TANT QUE (I ≤ N) FAIRE
FACT ← FACT * I ;
I ← I + 1 ;
FAIT ;
ECRIRE('N! = ', FACT) ;
FIN SI ;
FIN.
PROGRAMME Facto_REPETER ;
VARIABLE N, I : ENTIER ;
FACT : ENTIER ;
DEBUT
ECRIRE('Entrez N ≥ 0 :') ; LIRE(N) ;
SI (N < 0) ALORS ECRIRE('Erreur : N négatif.') ;
SINON
FACT ← 1 ; I ← 2 ;
REPETER
FACT ← FACT * I ;
I ← I + 1 ;
JUSQU’A (I > N) ;
ECRIRE('N! = ', FACT) ;
FIN SI ;
FIN.
DEVOIR 2 – Procédures sur tableaux de caractères
CONSTANTE NBMAX = 100 ;
TYPE TYPTAB = TABLEAU[1 .. NBMAX] DE CARACTERE ;

Question 1 – Procédure Remplissage


PROCEDURE Remplissage(VARIABLE DIM : ENTIER ; VARIABLE TAB : TYPTAB) ;
VARIABLE I : ENTIER ;
DEBUT {Remplissage}
REPETER
ECRIRE('Donnez DIM (1..', NBMAX, ') : ') ;
LIRE(DIM) ;
JUSQU’A ( (DIM ≥ 1) ET (DIM ≤ NBMAX) ) ;

POUR I VARIANT DE 1 A NBMAX FAIRE


TAB[I] ← ' ' ;
FAIT ;

ECRIRE('Saisir ', DIM, ' caractères (espaces autorisés) :') ;


POUR I VARIANT DE 1 A DIM FAIRE
LIRE(TAB[I]) ;
FAIT ;
FIN ; {Remplissage}

Question 2 – Procédure Affichage


PROCEDURE Affichage(TAB : TYPTAB ; DIM : ENTIER) ;
VARIABLE I : ENTIER ;
DEBUT {Affichage}
POUR I VARIANT DE 1 A DIM FAIRE
ECRIRE(TAB[I]) ;
FAIT ;
ECRIRE() ; {retour à la ligne}
FIN ; {Affichage}

Question 3 – Procédure Palindrome (sans espaces)


PROCEDURE Palindrome(TAB : TYPTAB ; DIM : ENTIER) ;
TYPE TYPTAB2 = TABLEAU[1 .. NBMAX] DE CARACTERE ;
VARIABLE BIS : TYPTAB2 ;
I, J, K : ENTIER ;
PAL : BOOLEEN ;
DEBUT {Palindrome}
{Copier sans espaces -> BIS[1..K]}
K ← 0 ;
POUR I VARIANT DE 1 A DIM FAIRE
SI (TAB[I] ≠ ' ') ALORS
K ← K + 1 ;
BIS[K] ← TAB[I] ;
FIN SI ;
FAIT ;

{Test miroir}
PAL ← VRAI ;
I ← 1 ; J ← K ;
TANT QUE (I < J) ET (PAL) FAIRE
SI (BIS[I] ≠ BIS[J]) ALORS
PAL ← FAUX
SINON
I ← I + 1 ;
J ← J - 1 ;
FIN SI ;
FAIT ;

SI (PAL) ALORS
ECRIRE('La phrase est un palindrome.')
SINON
ECRIRE('La phrase n''est pas un palindrome.') ;
FIN SI ;
FIN ; {Palindrome}

Question 4 – Procédure Inversion (in-place)


PROCEDURE Inversion(VARIABLE TAB : TYPTAB ; DIM : ENTIER) ;
VARIABLE I : ENTIER ;
TEMP : CARACTERE ;
DEBUT {Inversion}
POUR I VARIANT DE 1 A (DIM DIV 2) FAIRE
TEMP ← TAB[I] ;
TAB[I] ← TAB[DIM - I + 1] ;
TAB[DIM - I + 1] ← TEMP ;
FAIT ;
FIN ; {Inversion}

Question 5 – Procédure Comptage (nombre de mots)


PROCEDURE Comptage(TAB : TYPTAB ; DIM : ENTIER ; VARIABLE NBMOTS : ENTIER) ;
VARIABLE I : ENTIER ;
DEBUT {Comptage}
NBMOTS ← 0 ;
POUR I VARIANT DE 1 A DIM FAIRE
SI (TAB[I] ≠ ' ') ET ( (I = 1) OU (TAB[I-1] = ' ') ) ALORS
NBMOTS ← NBMOTS + 1 ;
FIN SI ;
FAIT ;
FIN ; {Comptage}

Question 6 – Procédure Recherche (pointeur sur le N-ième mot)


PROCEDURE Recherche(TAB : TYPTAB ; DIM : ENTIER ; N : ENTIER ; VARIABLE POINTEUR : ENTIER) ;
VARIABLE I, COMPTE : ENTIER ;
DEBUT {Recherche}
POINTEUR ← 0 ;
COMPTE ← 0 ;
I ← 1 ;

TANT QUE (I ≤ DIM) FAIRE


{Sauter les espaces}
TANT QUE (I ≤ DIM) ET (TAB[I] = ' ') FAIRE
I ← I + 1 ;
FAIT ;

SI (I ≤ DIM) ET (TAB[I] ≠ ' ') ALORS


COMPTE ← COMPTE + 1 ;
SI (COMPTE = N) ALORS
POINTEUR ← I ;
I ← DIM + 1 ; {pour sortir}
SINON
{Avancer jusqu'à la fin du mot}
TANT QUE (I ≤ DIM) ET (TAB[I] ≠ ' ') FAIRE
I ← I + 1 ;
FAIT ;
FIN SI ;
FIN SI ;
FAIT ;
FIN ; {Recherche}

Vous aimerez peut-être aussi