Académique Documents
Professionnel Documents
Culture Documents
Pre m iè re
pa rt ie
Page 1
Algorithmique et structures de données I
Exercice 1 :
La f amille Ben Abdallah est assez spéciale. En ef f et, chaque membre ne boit que dans son verre. Au
moment du repas, Meriam déclare désirer boire un Coca, son frère Mahmoud quant à lui voudrait un
Fanta.
Leur déception f ut grande au moment du service quand ils découvrent que leurs verres contiennent la
mauvaise boisson (c.à.d. Fanta dans le verre de Meriam et Coca dans le ver re de Mahmoud).
Comment les aider à satisf aire leur souhait et boire la bonne boisson dans le bon verre ?
Ce cas peut être rencontré dans plusieurs domaines. Nous voudrions le généraliser en l’écrivant sous
f orme d’un programme inf ormatique. Pour être sur de la solution, nous devions tout d’abord cerner ce
problème.
II. Analyse du problème : Décrire les étapes nécessaires pour être sure que l’inversion du contenu a
été f aite.
Exercice 2
1)
Algorithme Affiche
Début
| Afficher ('Bonjour à tous')
Fin
2)
Algorithme Calcul
var A, B, X (Entier)
Début
| Ecrire ("Donner A")
| Lire(A)
| Ecrire ("Donner B")
| Lire(B)
| x <- A↑B
| Ecrire ("le résultat est", x)
Fin
3)
Algorithme Somme
var A, B, S (Entier)
Début
| Lire (A)
Page 2
Algorithmique et structures de données I
| Lire (B)
| S <- A + B
| Ecrire (S)
Fin
Page 3
Algorithmique et structures de données I
4)
Algorithme Moyenne1
var A, B, M (Entier)
Début
| Ecrire ("Donner A")
| Lire (A)
| Ecrire ("Donner B")
| Lire (B)
| M = (A+B)/2
| Ecrire ("la moyenne est", M)
Fin
5)
Algorithme Moyenne2
var A, B, M (Entier)
Début
| Ecrire ("Donner A")
| Lire (A)
| Ecrire ("Donner B")
| Lire (B)
| Ecrire ("la moyenne est", A+B/2)
Fin
6)
Algorithme Affichage d’une opération
var
A, B (Réel)
const
C(Caractère)
Début
| Ecrire ("Donner A")
| Lire (A)
| Ecrire ("Donner B")
| Lire (B)
| Ecrire ("Donner l’operateur C")
| Lire (C)
| Ecrire ("ACB")
Fin
Exercice 3
Etudions le fonctionnement d’un ascenseur. Celui-ci se mettra en mouvement si les deux signaux d’entrée A=
porte fermée et B= bouton d’étage appuyée sont actifs, c.à.d. égaux à 1.
Dans ce cas le signal de sortie S= mise en mouvement de l’ascenseur sera lui aussi actif et égal à 1.
Dans les autres cas de figure, A="1" mais B="0" par exemple, S restera inactif et égal à "0" et par conséquent
l'ascenseur ne bougera pas.
1- Quel est l'opérateur logique permettant ce fonctionnement ?
2- Présenter la table de vérité correspondante à ce système.
Exercice 4
Soit les deux chaines de caractères : "mer" et "veille".
Ecrire un algorithme qui permet de concaténer ces deux chaines et afficher la longueur de la nouvelle chaine.
Page 4
Algorithmique et structures de données I
Exercice 1
NO MBRE, ValeurMaximale, x, mon_age, x1, 1x, max%, valeur, procedure, is, mon-age, mon age,
mon_âge, km/ hr, Nombre d'éléments, case.
Exercice 2
Donner un nom de variable approprié pour les inf ormations suivantes:
• Le nombre d'étudiants par groupe
• Le nombre de buts marqués dans un match de f ootball
• Le numéro d'une carte d'identité nationale
• L'âge d'un étudiant
Exercice 3
• A1 3
• B 3 * 5
• C A1
• A + 1 B + 1
• C (B + 5) * 4
• B B + C
• A B x C
• A 3C
• B B + 3
2
Exercice 4:
Q uel est le résultat
de ces af f ectations
1) 2)
X <- 5 X <- 5
Y <- 3 Y <- X + 4
Z <- X + Y X <- X + 1
X <- 2 Y <- X – 4
Z <- Y – X Z <- 5
3) 4)
X <- 2 X <- 5
Y <- 3 Y <- 10
X <- X + Y Z <- X + Y
Y <- X – Y Y <- X + Y
X <- X – Y X <- Z
Page 5
Algorithmique et structures de données I
Exercice 5
Ecrire un algorithme qui permet de calculer le salaire net et le salaire net imposable d’un employé.
• Salaire net = salaire brut - charges salariales.
• Salaire net imposable = salaire net + CSG (cotisation sociale généralisée) + RDS
Exercice 6
Ecrire un algorithme qui saisit deux nombres entiers et les aff iche sous f orme d’un nombre décimal .
Page 6
Algorithmique et structures de données I
Exercice1 :
Écrire un algorithme qui permet de lire au clavier un entier et d'af f icher à l'écran les valeurs résultant
de sa multiplication par 2, 3, 5, 7 et 9.
Exercice 2
Écrire un algorithme qui permet de calculer la somme de deux entiers donnés et d'aff icher le r ésultat
de cette somme.
Exercice 3
Écrire un algorithme qui permet de calculer le périmètre et la surface d'un rectangle dont les
dimensions sont données.
Surf ace= a*b, Périmètre = (a+ b) * 2.
Exercice 4
Écrire un algorithme qui calcule le quotient et le reste de la division entière de deux nombres positif s
A et B sachant que B est supposé non nul.
Exercice 5
Écrire un algorithme qui permet de permuter le contenu de deux variables contenant deux entier s
donnés.
Exercice 6
Écrire un algorithme qui lit un nombre positif de secondes et le convertit en heures, minutes et
secondes., 3, 5, 7.
Page 7
Algorithmique et structures de données I
Exercice 1
Écrire un algorithme qui permet de lire la moyenne d'un étudiant et d'af f icher la mention
correspondante (Note ≥ 16: Très bien; 14 ≤ Note < 16: Bien; 12 ≤ Note < 14: Assez bien; 10 ≤
Note < 12: Passable; 0 ≤ Note < 10: Echec). 15
Exercice 2
2
Écrire un algorithme qui permet de résoudre une équation du second degré à une seule inconnue (ax
+ bx + c = 0). Les entrées sont les coef f icients a, b et c.
Exercice 3
Une entreprise paie ses salariés selon le principe d'un taux horaire de base auquel on applique un
coef f icient K de la manière suivante:
• Pour 39 heures de travail par semaine, K = 1.
ème ème
• De la 40 à la 44 heure par semaine, K = 1,5.
ème
• Après la 44 heure, K = 2.
Écrire un programme qui permet de calculer le salaire hebdomadaire d’un employé sachant son
nombre d’heures travaillées et le taux horaire de base.
Exercice 4
Écrire un algorithme permettant de calculer le montant des impôts dus par un contribuable en f onction
de son revenu imposable (Rimp) et son nombre de parts f iscales (Nparts) qui devront être saisis au
clavier. Les règles suivantes doivent être respectées:
1. Le revenu par part (Rpart) est égal au quotient Rimp par Nparts.
2. L'impôt par part (Impa rt) est calculé selon le barème suivant:
• 0 si Rpart est inf érieur à 50 Dinars.
• 10% sur la tranche de Rpart comprise entre 50 Dinars et 100 Dinars.
• 25% sur la tranche de Rpart comprise entre 100 Dinars et 200 Dinars.
• 50% sur la tranche de Rpart qui dépasse 200 Dinars.
3. L'impôt total est égal au produit de NbParts par Impart.
Page 8
Algorithmique et structures de données I
Exercice 5
Si l'on numérote de 1 à 7 les jours de la semaine qui vont de lundi à dimanche, écrire un algorithme qui
lit au clavier le numéro d'un jour et qui aff iche "Jour de travail" ou "W eek-end" selon le jour.
Exercice 6
Écrire un algorithme qui permet d'ef f ectuer les opérations simples (+ , -, * , / ). A l'exécution, le
programme donnerait par exemple: 5 + 11 = 16
Exercice 7
Écrire un algorithme qui lit une date de naissance (jour, mois, année), supposée correcte, et qui permet
de connaitre à quel jour de semaine elle correspond. Cette méthode ne marche pas pour le cas du 29
f évrier d'une année bissextile. Une année bissextile est soit divisibles par 4 mais non d ivisibles par
100 soit divisible par 400.
Le processus est le suivant :
- Faire la somme de A+ B+ M+ J tel que : A : les deux derniers chiff res de l’année de naissance : B : la
partie entière de la division de A par 4 M : un nombre associé au mois de ta naissance (janvier= 0,
f évrier= 3 ,mars= 3, avril= 6, mai= 1, juin= 4, juillet= 6, août= 2, sept= 5, octobre= 0, novembre= 3,
décembre= 5) ; J : le numéro du jour du mois de ta naissance.
Exemple :
Si tu es né le 16 mai 1999. A = 99 ; B = 24 ; M = 1 ; J = 16 ; A + B + M + J = 140. 140 divisé par
7, il reste 0.
né un Dimanche !
Si tu es né le 29 Février 1999.
Désolé impossible de savoir quand vous êtes né !
Exercice 7
Deux joueurs vont jouer au jeu « papier, caillou, ciseau » Chaque joueur propose son pari en tapant
(0 pour dire cailloux, 1 pour dire papier, 2 pour dire ciseau).
Les règles du jeu sont les suivantes :
Le ciseau coupe le papier, donc celui qui tape 2 gagne celui qui tape 1.
Le caillou rend le ciseau moins tranchant, donc celui qui tape 0 gagne celui qui tape 2.
Page 9
Algorithmique et structures de données I
Le papier enveloppe le caillou, donc celui qui tape 1 gagne celui qui tape 0.
Si les deux joueurs choisissent le même élément alors match nul.
Ecrire un algorithme qui arbitre une partie et af f iche le vainqueur.
Page 10
Algorithmique et structures de données I
Exercice 1
Écrire un algorithme qui permet de calculer la somme, la moyenne, la valeur la plus grande, la valeur
la plus petite et le nombre de valeurs positives d'un ensemble d'entiers saisis. Le nombre d'entiers à
saisir est une donnée.
Exercice 2
Écrire un algorithme qui demande à l'utilisateur deux entiers n et p puis qui af f iche à l'écran tous les
cubes
Exercice 3
O n vous propose un travail dangereux. Le salaire quotidien commence à 0,001 Dinar est multiplié par
2 tous les jours. Ainsi, vous recevrez 0,001 Dinar le premier jour, 0,002 Dinar le deuxième jour, 0,004
Dinar le troisième jour et ainsi de suite. Vous voulez savoir combien de jours f aut-il travailler pour
devenir millionnaire en dinars. Ecrire un algorithme qui permet de le déterminer.
Exercice 4
Ecrire un algorithme qui propose de saisir un entier n et eff ectue selon un menu de chois les calculs
correspondants.
Tapez 1 pour calculer le produit des termes
Tapez 2 pour calculer la moyenne des termes pairs
Par termes, on désigne les n nombres (n1 , n2 ,… ..nn) obtenus de cette manière ni= 1..n = a* i (a est une
Exercice 5
Ecrire un algorithme qui aff iche les réels saisis par l’utilisateur et calcule leur moyenne. La procédure
s’arrête quand l’utilisateur a saisi le réel 12,34.
Exercice 6
Ecrire un algorithme qui aff iche la somme de deux temps valides (en heure/ minute) sa isis par
l’utilisateur.
Exercice 7
Page 11
Algorithmique et structures de données I
Écrire un algorithme qui permet de calculer la somme des chif fres pour un entier N donné:
Exemple: pour n= 1991, la somme est 20.
Exercice 8
Ecrire un programme C qui lit un entier entre 0 et 10 puis demande à un autr e utilisateur, ne
connaissant pas l’entier qui a été saisi précédemment, de donner un nombre entre 0 et 10.
Dès que l’utilisateur tape le bon nombre un message est af f iché f élicitant le joueur. Sinon on lui i ndique
que ce qu’il a donné est plus grand ou p lus petit et on lui demande de redonner un nombre.
L’utilisateur peut avoir au maximum 3 chances si au bout desquelles il ne donne pas le bon nombre, l e
programme est arrêté et un message d’échec est af f iché pour l’utilisateur
Page 12
Algorithmique et structures de données I
Exercice 1
Écrire un algorithme qui insère une valeur donnée v dans un tableau d'entiers T donné à un indice
donné i. Les cases suivant l'indice i doivent être "décalées" et la valeur donnée v sera mise dans l a
case n°i.
Exercice 2
Écrire un algorithme qui supprime une case dont l'indice I est donné d'un tableau d'entiers T. Les cases
suivant l'indice I doivent être "décalées".
Exercice 3
Écrire un algorithme qui permet de saisir un nombre variable d'entiers pour ensuite compter parmi ces
entiers le nombre de valeurs paires et le nombre de valeurs impaires.
Exercice 4
Écrire un algorithme qui permet de calculer la taille de la séquence d'entiers ordonnés (d’une manière
croissante) la plus longue dans un tableau d'entiers.
Exercice 5
Écrire un algorithme qui permet de saisir un ensemble d’entiers puis de les af f icher sans répétitions.
Exercice 6
Écrire un algorithme qui permet d'inverser un tableau d'entiers.
Exercice 7
Un nombre premier est un entier naturel qui a exa ctement 2 diviseurs (1 et lui-même). Écrire un
algorithme qui permet de déterminer tous les nombres premiers compris entre 0 et N en utilisant un
tableau de booléens (0 et 1), où la case d'indice i indique si i est un nombre premier (1) ou non (0 ).
Page 13
Algorithmique et structures de données I
Exercice 1
Écrire un algorithme qui compte les occurrences d'un caractère dans un tableau de caractères.
Exercice 2
O n appelle bigramme une suite de deux lettres. Écrire un algorithme qui calcule le nombre
d'occurrences d'un bigramme donné dans un tableau de caractères.
Exercice 3
Écrire un algorithme qui permet de calculer les nombres d'occurrences de toutes les lettres minuscul es
de l'alphabet dans une chaîne de caractères.
Exercice 4
Écrire un algorithme qui recherche une sous-chaîne de caractères dans une chaîne de caractères. Par
exemple, si la chaîne de caractères contient la valeur "programme d'ordinateur" et que la sous-chaîne
recherchée est "gramme d'or", la procédure de recherche doit indiquer que la sous-chaîne existe et
l'indice retourné doit être égal à 3.
Exercice 5
Un mot est dit Palindrome s'il se lit de la même manière dans le sens de lecture de droite à gauche
que dans le sens de gauche à droite. Par exemple, les mots "LAVAL" et "ADA" sont des palindromes.
Écrire un algorithme qui dit si une chaîne donnée est un palindrome.
Exercice 6
Ecrire un algorithme qui permet de nettoyer un tableau de caractères en éliminant les espaces
superf lus: chaque f ois que l'on trouve une suite d'espaces, il f audra les éliminer tous sauf un. Sachant
que le premier caractère du tableau et le dernier sont dif f érent d’espace.
Page 14
Algorithmique et structures de données I
De ux iè m e
pa rt ie
Devoirs surveillés
Page 15
Algorithmique et structures de données I
Devoir surveillé n° 1 ( 2 0 0 9 - 2 0 1 0 )
Ecrire un algorithme qui permet de fusionner deux tableaux en entrée supposés triés de telle façon que le
tableau résultat soit lui aussi trié.
Exemple :
Exercice 2 (8 points):
Ecrire un algorithme qui détermine si une chaine de caractère S1 est un préfixe d’une autre chaine S2. S1
est un préfixe de S2 si la chaine S1 est le début de la chaine S2.
Exemple :
Les préfixes de S2=’TIMOLEON’ sont :
Page 16
Algorithmique et structures de données I
Exercice1 :
Algorithme Fusion
var
i,n1,n2 (Entier)
T1, T2 (Tableau [1..100] De Entier)
T (Tableau [1..200] De Entier)
Début
Répéter
Ecrire ("Donner la taille logique de T1")
Lire (n1)
Jusqu'à (n1 > 0 Et n1 < 100)
Répéter
Ecrire ("Donne la taille logique de T2")
Lire (n2)
Jusqu'à (n2 > 0 Et n2 < 100)
Ecrire ("Saisie du Tableau T1:")
Ecrire ("Donnez un entier")
nb T1 [0]
Lire (T1 [0])
Pour i De 1 à n - 1 Faire
Répéter
Ecrire ("Donnez un entier")
Lire (T1 [i])
nb T1 [i]
Jusqu'à (T1 [i] > nb)
FinPour
Ecrire ("Saisie du tableau T2")
Ecrire ("Donnez un entier")
Lire (T2 [0])
nb T2 [0]
Pour i De 1 à n - 1 Faire
Répéter
Ecrire ("Donner un entier")
Lire (T2 [i])
Jusqu'à (T2 [i] > nb)
nb T2 [i]
i i + 1
j j + 1
k k + 1
FinSi
FinTantQue
i i + 1
k k + 1
Page 17
Algorithmique et structures de données I
FinTantQue
j j + 1
k k + 1
FinTantQue
Ecrire ("La fusion de T1 et T2 donne:")
Pour i De 0 à n1 + n2 Faire
Ecrire (T [i])
FinPour
Fin
Exercice2 :
Algorithme ChainePrefixe
Variable
i, prefixe
ch1, ch2 (Chaîne De Caractère)
Début
Ecrire ("Saisissez une chaîne de caractères SVP")
Lire (ch2)
Ecrire ("Saisissez une chaîne préfixe")
i 0
Lire (ch1)
prefixe 1
TantQue (i < longueur (ch1) Et prefixe = 1) Faire
Si (ch1 [i] = ch2 [i]) Alors
i i + 1
prefixe 0
Sinon
FinSi
FinTantQue
Si (prefixe = 1) Alors
Ecrire (ch1, "est préfixe de", ch2)
Sinon
Ecrire (ch1, "n'est pas préfixe de", ch2)
FinSi
Fin
Page 18
Algorithmique et structures de données I
Exercice 1: (8 pt)
Etant donné un entier positif X, on se propose d’écrire un algorithme qui permet de donner son code
binaire suivant cette méthode:
4. Le regroupement des restes en sens inverse de leurs apparitions donne la valeur du nombre X en
binaire.
Exemple:
Si X=13 alors
{
Algorithme EXERCICE1
Var x, n , i (entier)
Debut
Répéter
lire(x)
jusqu’à (x ≥0)
n1
T[n]< -x mod 2;
Page 19
Algorithmique et structures de données I
X< -x div 2;
n< -n+ 1;
f in tant que
ecrire(T[i])
f in pour
FIN
while(i<l)
Exercice 2: (12pt)
On se propose d’écrire un algorithme permettant de vérifier si un tableau est symétrique d’ordre 3 ou non.
Un tableau est dit symétrique de degré 3 s’il existe au moins 3 cases dont la somme est égale à la somme
des 3 cases suivantes,
1 3 6 3 2 5 3 3 1 1
Symétrie de degré 3
Algorithme EXERCICE2
Debut
Repeter
Lire (n)
(Jusqu'à n> 2)
Lire(T[i])
Fin pour
i< --- 1
Page 20
Algorithmique et structures de données I
s1 0
s2 0
pour j de i à i+ 2 f aire
s1 s1+ T[j]
s2 s2+ T[j+ 3]
fin pour
symetrie1
Si non i < - i+ 1
finsi
fin tantque
FIN
Page 21
Algorithmique et structures de données I
T roisiè m e
pa rt ie
Page 22
Algorithmique et structures de données I
Exam en corrigé N °1
(2012/ 2013)
Exercice 1 (4 points) :
Écrire une procédure en algorithmique qui permet d’af f icher les caractères d’une chaîne de caractères
donnée comme suit: Premier caractère, Dernier caractère, Deuxième caractère, Avant-dernier caractère,
Troisième caractère, etc.
Exemple :
a b c d e f g m n o p q r s
Résultat : a, s, b, r, c, q, d, p, e, o, f , n, g, m.
Var
i (entier)
Début
Pour i de 1 à N/ 2 Faire
Écrire (T [ i ])
Écrire (T [ N-i+ 1 ])
Fin Pour
Écrire (T [ N/ 2+ 1])
FinSi
Fin
Page 23
Algorithmique et structures de données I
Exercice 2 (8 points) :
Écrire une procédure en algorithmique qui reçoit 2 tableaux d’entiers T1 et T2 et qui rend un 3 ème tableau
T3 contenant les entiers qui existent dans T1 et dans T2 avec le même nombre d’occurrences.
Exemple :
T1 1 4 1 3 5 5 8 9
T3 3 5
T2 5 2 3 5 6 1 8 8 2
Var i, Nb (entier)
Début
Nb 0
Pour i de 1 à N faire
FinPour
NbreOcc Nb
Fin
Procédure Memes ( T1 (Tableau [1..100] de entier), N1 (entier), T2 (Tableau [1..100] de entier), N2 (entier),
Page 24
Algorithmique et structures de données I
Var i (entier)
Début
N3 0
Pour i de 1 à N1 faire
Trv FAUX
j i-1
jj-1
N3 N3 + 1
T3 [N3] T1 [i]
FinSi
FinSi
FinPour
Fin
Exercice 3 (8 points) :
Écrire une procédure en algorithmique qui détermine si une matrice carrée (tableau d’entiers à 2
dimensions T [1..N, 1..N]) contient une ligne et une colonne identiques. La procédure rend 3 résultats : VRAI
ou FAUX, l’indice d’une ligne et l’indice de sa colonne identique. Ces derniers indices contiendront 0 s’il
n’existe aucune ligne et colonne identiques. Exemples :
Page 25
Algorithmique et structures de données I
1 6 3 4 1 2 9 0 1 9 1 6 3 4
2 5 4 3 3 4 6 4 4 4 2 5 4 3
1 2 1 5 2 3 2 3 2 3 1 3 1 5
5 2 5 1 9 6 2 2 3 0 5 2 5 1
1 3 3 0 2 4
VRAI, 3, 1 2 2 0 1 4 2 FAUX, 0, 0
VRAI, 4, 3
Remarque : Dans le cas de plusieurs occurrences d’égalité ligne/ colonne, on af f iche la première.
Procédure LC (T (Tableau [1..100, 1..100] de entiers), N (entier), VAR Trouve (logique), VAR L (entier), VAR C (entier))
Var
i, j (entier)
Début
L 0
C0
Trouve FAUX
i1
j1
k1
Egal VRAI
kk+ 1
jj+ 1
Page 26
Algorithmique et structures de données I
ii+ 1
Si Trouve alors
L i-1
C j-1
FinSi
Fin
Page 27
Algorithmique et structures de données I
ht t p:/ / www.sit eduzero.com/
R. Mal gouyr es, F. Feschet , Z. Zr our . Al gor i t hmi que et st r uct ur es de données en C
2011.
Page 28