Exercice 1
Soit une matrice M de NL* NC entiers avec ( 3 < NL < 15 et 3 < NC < 15) dont les éléments d’une même colonne
sont distincts.
On se propose de déterminer la valeur minimale des maximums des colonnes de la matrice M appelée MINIMAX.
Pour ce faire on détermine le maximum de chaque colonne puis on détermine la valeur minimale des maximums
obtenus
Travail demandé :
1) Déclarer tous le nouveaux types nécessaires
2) Ecrire un algorithme d’un module Remplir(M,NL,NC) qui permet de remplir la matrice M
3) Ecrire un algorithme d’un module MAX_Colonne(NL,j,M) qui , pour une colonne j de la matrice M ,
permet de retourner le numéro de la ligne de son maximum.
4) Ecrire un algorithme d’un module nommée Recherche_Minimax qui permet de déterminer et d’afficher
les positions de MINIMAX dans la matrice M en utilisant le module MAX_Colonne et en appliquant le
procédé suivant :
Remplir un tableau d’enregistrement T par les positions des maximums des colonnes de la matrice
M. Chaque enregistrement du tableau T correspond au maximum d’une colonne et il est formé des
deux champs suivants :
C : le numéro de la colonne de la matrice M ou se trouve la valeur maximale d’une colonne
L : le numéro de la ligne de la matrice M ou se trouve la valeur maximale d’une colonne
Chercher et afficher la valeur de MINIMAX
Afficher à partir du tableau T la ou les position(s) du MINIMAX
Exemple :
Pour la matrice M avec NL =5 et NC= 6 :
900 481 300 99 210 110
300 696 29 133 -37 61
-155 951 153 100 300 49
31 -11 81 -1 54 452
13 17 -541 300 696 301
Le tableau T contiendra les enregistrements suivants :
0 0 1 2 2 0 3 4 4 4 5 3
La procédure Recherche_Minimax affiche :
Minimax = 300 et les positions sont (2,0) (3,4)
En effet MINIMAX est égale à 300 et se trouve dans la colonne 2 , la ligne 0 et la colonne numéro 3 , la ligne
numéro 4 dans la matrice M.
1/7
Exercice 2 :
Soit un tableau T contenant N chaines de caractères de longueur ≤16 et ne contenant que de
lettres majuscules. (4≤N≤20). On veut à partir du tableau T réaliser les tâches suivantes :
1) Transférer chaque élément du tableau T dans une ligne d’une matrice M de N lignes et 8 colonnes de
façon que M[i,j] contient en partant de la droite, deux lettres contiguës figurant dans T[i]. Si la longueur
de T[i] n’est pas divisible par 16, ajouter alors à l’extrême droite autant de lettres majuscules choisies au
hasard. (0≤i≤N-1 et 0≤j≤7)
Exemple :
Pour N=4 et T =
0 1 2 3
EEDFABCFRYUIOPAE CBACRTBDXTYACD EEDFABCFRAUIOPAB EEDFABCFR
La matrice M sera :
0 1 2 3 4 5 6 7
0 AE OP UI RY CF AB DF EE
1 AC CD YA XT BD RT AC CB
2 AB OP UI RA CF AB DF EF
3 CD AA BC RA CF AB DF EE
Pour transférer T[1] dans la ligne numéro 1 de la matrice M, on doit ajouter 2 lettres choisies au hasard car la
longueur(T[1])= 14 n’est pas divisible par 16, en supposant qu’on a choisie successivement les lettres A et C, T[1]
sera CBACRTBDXTYACDAC
En partant de la gauche on aura M[1,0] = AC M[1,1] = CD M[1,2] = YA M[1,3] =XT M[1,4] =BD
M[1,5] = RT M[1,6] =AC et M[1,7] = CB
2) Former à partir de M, un tableau d’enregistrements R. Chaque enregistrement est composé des champs
:
Nb = nombre obtenu par la concaténation des codes ASCII des lettres figurant dans la ligne i
de la matrice M (Nb est sous la forme d’une chaine de caractères)
Prod = produit des chiffres non nuls du nombre Nb
Anacyc = prend la valeur vrai si l’entier Prod est anacyclique, sinon la valeur faux (voir
annexe)
Travail demandé :
5) Ecrire l’algorithme du programme principal qui permet de remplir le tableau T, réaliser les tâches
décrites ci-dessus, afficher le contenu de la matrice M et finalement afficher le contenu du tableau R (la
décomposition en modules est obligatoire)
6) Ecrire l’algorithme de chaque module utilisé en 1)
Annexe
Un nombre décimal X est anacyclique si son équivalent en hexadécimal s’écrit à l’envers du nombre X Exemples
53 est un nombre décimal anacyclique car (53)10 = (35)16 371
est un nombre décimal anacyclique car (371)10 = (173)16
2/7
Exercice 3 :
Pour divertir les bacheliers, un établissement scolaire a organisé une journée ouverte comprenant des activités
diverses. A la fin de la cérémonie, des cadeaux ont été distribués aux gagnants du jeu de chance.
Pour gérer ce jeu, on vous demande de rédiger un algorithme qui permet de :
1- Remplir un fichier [Link] avec des candidats la saisie s’arrête selon le choix de l’utilisateur en répondant à la
question "Voulez-vous continuer ? O : Oui / N : Non".
Chaque candidat est défini par :
Nom et prénom : chaine alphabétique contenant un seul espace et qui commence par une lettre majuscule
Mot de chance : chaine aléatoire majuscule de longueur 5
Poids du mot de chance : somme des codes Ascci des caractères du mot de chance
2- Remplir un fichier [Link] contenant la liste des candidats gagnants qui ont un nombre qui représente le poids
du mot de chance est heureux sachant qu’un nombre heureux est un nombre entier qui, lorsqu’on ajoute les carrés
de chacun de ses chiffres, puis les carrés des chiffres de ce résultat et ainsi de suite jusqu'à l’obtention d’un nombre à
un seul chiffre égal à 1.
Exemple :
Pour X = 386 Pour X = 380
32 + 82 + 62 = 109 3 2 + 82 + 02 = 73
12+02+92 = 82 7 2 + 32 = 58
82+22 = 68 5 2 + 82 = 89
62+82=100 8 2 + 92 = 145
12+02+02=1 1 2 + 42 + 52 = 42
On est arrivé à un nombre d’un seul chiffre qui est égal à 1 4 2 + 22 = 20
,donc 386 est heureux 2 2 + 02 = 4
On est arrivé à un nombre d’un seul chiffre qui est
égal à 4 ,donc 380 n’est pas heureux
3- Afficher le contenu de Fichier [Link]
Exemple :
Nom&Prenom Sami Nefsi Aymen Douri Tarek bennour Nada Soussi Ines Alaya
Mot chance FYSGC WBOLG IBVTT EINTR YHJEB
Poids 380 379 393 368 370
Bloc1 Bloc2 Bloc3 Bloc4 Bloc 5
Fichier [Link]
Liste des éléves gagnants :
Aymen Douri
Nada Soussi
3/7
Exercice 4 :
Le code Morse international, ou l’alphabet Morse international, est un code permettant de transmettre un texte à
l’aide de séries d’impulsions courtes et longues, qu’elles soient produites par des signes, une lumière, un son ou un
geste. Ce codage de caractères assigne à chaque lettre, chiffre et signe de ponctuation une combinaison unique de
signaux intermittents.
Le code morse est principalement utilisé par les militaires comme moyen de transmission chiffrée.
N.B. : à la suite, on s’intéresse seulement qu’au lettres majuscules et chiffres
En se basant sur le schéma ci-dessus, la simulation à utiliser pour le Code morse est décrit comme suit :
Le tiret est représenté par un tiret de six (-).
Le point est représenté par un point.
Deux éléments d’un même caractère sont séparés par un espace.
Les codes de deux caractères successifs sont séparés par trois (3) espaces.
L’espacement entre deux mots est codé par sept (7) espaces.
Exemples :
✓ Le code de la lettre « A » est " . - - - "
✓ Le code des mots « DS1 ALGO » est :
-.. … .---- .- .-.. --. ---
D 3 espaces S 3espaces 1 7espaces A 3espaces L 3espaces G 3espaces O
Étant donné un fichier d’enregistrements intitulé « Codes_morse.dat », où chaque enregistrement est
composé de deux champs :
✓ Caractère : contenant une lettre majuscule ou un chiffre,
✓ Code : contenant le code représentant l’équivalent en code morse du caractère (lettre ou chiffre).
En utilisant le fichier « Codes_morse.dat », on se propose de réaliser l’équivalent morse d’un message à
envoyer contenu dans un fichier texte intitulé « [Link] » et l’enregistrer dans un fichier texte intitulé
« Ré[Link] ». Sachant que chaque ligne du fichier « [Link] » est composée par des lettres
majuscules, des espaces et/ou des chiffres.
Travail demandé :
Soient F1, F2 et F3 les noms logiques des fichiers « Codes_morse.dat », « [Link] » et « Ré[Link]
».
1- Donner la déclaration d’un type pour le fichier « Codes_morse.dat » ainsi que celles des types
nécessaires à sa déclaration.
2- Ecrire un algorithme d’un module, nommé Remplir (F1), qui permet de remplir le fichier
« Codes_morse.dat » par les enregistrements formés par les lettres et les chiffres et leurs codes.
N.B. :
-Les codes seront saisis
-Le candidat n’est pas appelé à vérifier l’unicité de chaque code.
3- Ecrire un algorithme d’un module, nommé GENERE (F1, F2, F3), qui permet de coder chaque
ligne du fichier « [Link] » puis l’enregistrée dans une ligne du fichier « Ré[Link] ».
4- En faisant appel aux modules déjà définis, écrire un algorithme d’un programme principal intitulé
« CODAGE » qui permet :
✓ De remplir le fichier « Codes_morse.dat »
✓ En se référant au fichier « Codes_morse.dat », de générer le fichier « Ré[Link] » à partir du
fichier existant « [Link] ».
4/7
Exercice N°5
Dans une entreprise, le directeur décide de se rappeler toujours des anniversaires de ces employés.
Pour cela, on se propose de créer une application qui permet de stocker tous les dates de naissances
de tous ces employés.
L’idée est la suivante :
Créer un fichier « [Link] », qui permet de contenir pour chaque employé, son nom et
prénom, son numéro de téléphone (chaîne composé de huit chiffres), et sa date de naissance
(composée de trois valeurs : jours, mois et année).
On veut maintenant, pour une date donnée, générer un message de félicitation pour chaque
employé qui fait son anniversaire à l’aide d’un programme qui fonctionne de la manière
suivante :
Le programme demande la date du jour (jour, mois et année) Il cherche dans le fichier « [Link] »
tous les employés qui font leur anniversaire à ce jour-là. Et pour chaque employé trouvé, le
programme créera un fichier texte d’extension « *.txt » portant comme nom le numéro de téléphone
de cet employé.
Exemple :
Si aujourd’hui l’anniversaire de l’employé MAKREM dont son numéro de téléphone est 23205305,
donc le fichier « [Link] » sera créer, et ainsi de suite…
Le contenu de chaque fichier sera de la forme suivante :
Chez <nom><prenom>
Aujourd’hui c’est votre <age> eme anniversaire. Je vous souhaite une longue vie pleine
de bonheur et de joie. Voilà, je n’oublie jamais ton anniversaire.
Ton directeur
Dans le but d’offrir à ce directeur la possibilité de réaliser ces traitements, on vous demande de
réaliser un programme qui permet :
D’ajouter un ou plusieurs employés à la fin du fichier « [Link] ». La saisie se termine en
répondant par « N » à la question « Voulez-vous continuez ? » sachant que le numéro de
téléphone est unique.
De créer à partir du fichier « [Link] », les fichiers textes correspondants à ceux qui font
leurs anniversaires à une date donnée.
Travail demandé :
1- Écrire l’algorithme du problème en le décomposant en modules.
2- Écrire les algorithmes des modules envisagés.
5/7
Exercice 6 :(3SI)
On se propose de remplir un tableau T par N chaînes de caractères qui représentent le nom et prénom d’un
ouvrier avec :
Nom et Prénom : chaîne de caractères alphabétique qui contient un seul espace
NB :
le candidat n’est pas appelez à saisir la taille N de tableau
tous les éléments du tableau sont distincts vous pouvez utiliser une fonction Distinct(T,n,X)
Tableau T :
Fares Othmani Olfa Zagrouba Ranim Issa Sami Kalti Rayen Ahmed
Pour Calculer les score d’un ouvrier on vous demande de remplir un tableau R par N score avec chaque
score est la somme de codes ASCII des caractères minuscules qui se trouve plus de 2 fois dans le nom
prénom d’un ouvrier.
Exemple
pour l’ouvrier : Fares Othmani ⇒ le caractère a existe deux fois donc son score est:=97
pour l’ouvrier Ranim Issa ⇒ les caractères a et s existe plus 2 fois donc son score est : 97 + 115 = 212
Tableau R :
97 97 212 202 101
On essaye de trier les tableau par ordre décroissant et afficher le nom et prénom de ouvrier qui à le plus
grand score.
Le tableau R Après Tri :
212 202 101 97 97
Le programme affiche : Ranim Issa ,Score=212
1) Donner le T.D.O.G et T.D.N.T
2) Écrire un algorithme de programme principale
3) Une solution modulaire est exigé
6/7
Exercice 7 :
On se propose de calculer le PGCD de n entiers positifs stockés dans la première ligne d'une matrice M.
Pour ce
faire, on va suivre les étapes suivantes :
Saisir un entier n >2
Remplir la première ligne de la matrice M de taille n*n aléatoirement avec des entiers positifs <100
Remplir les autres lignes de la matrice de sorte que la case d'une matrice M[L,C] contiendra le PGCD
de M[L-1,C] et M[L-1, C+1]
Afficher la matrice (même format que dans l'exemple)
Exemple :
n=5
60 48 16 34
12 16 2
4 2
2
En fait le PGCD(60, 48)=12, PGCD(48,16)=16, PGCD(16,34)=2, PGCD(12,16)=4, PGCD(16,2)=2,
PGCD(4,2)=2
7/7