0% ont trouvé ce document utile (0 vote)
41 vues9 pages

DS1 Aveccorrection

Le document présente deux exercices d'algorithmique : le premier consiste à comparer deux matrices en vérifiant leur identité en lignes, colonnes et diagonales, tandis que le second traite de la gestion des compétitions sportives en enregistrant des participants et en calculant le total des médailles par club. Chaque exercice inclut des algorithmes détaillés pour la saisie, le remplissage et l'affichage des données. Des structures de données appropriées sont également définies pour chaque problème.

Transféré par

bouatay adel
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)
41 vues9 pages

DS1 Aveccorrection

Le document présente deux exercices d'algorithmique : le premier consiste à comparer deux matrices en vérifiant leur identité en lignes, colonnes et diagonales, tandis que le second traite de la gestion des compétitions sportives en enregistrant des participants et en calculant le total des médailles par club. Chaque exercice inclut des algorithmes détaillés pour la saisie, le remplissage et l'affichage des données. Des structures de données appropriées sont également définies pour chaque problème.

Transféré par

bouatay adel
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

Prof :Fredj Imed Devoir de Synthese N°1

AS 2025-206
Mat : Algorithmique 3ème Info

Matrice -Enregistrement -Recherche Simple

Exercice n° 1 (10 pts)


Ecrire l’algorithme d’un programme qui permet de :

• Saisir un chiffre N aléatoire et paire.


• Remplir une première matrice M de taille N*N par des chiffres aléatoires
non nul.
• Remplir une deuxième matrice T de taille N*N par des chiffres aléatoires non
nul.
• Afficher les deux matrices M et T
• Vérifier si M et T sont identique en (lignes ,colonnes et
diagonales) ou (diagonales) sinon (non identique)

Exemple1 : pour N=4 et M


0 1 2 3 0 1 2 3
0 6 6 2 3 0 6 6 2 3

1 5 9 2 3 1 5 9 2 3

2 8 5 2 7 2 8 5 2 7

3 8 3 4 1 3 8 3 4 1

Le programme affiche identique en ligne, colonnes et diagonales

Exemple2 : pour N= 4 , M et T
0 1 2 4 0 1 2 3
0 6 7 5 6 0 6 6 2 6

1 3 6 6 3 1 5 6 6 3

2 3 6 6 2 2 8 6 6 7

3 6 3 4 6 3 6 3 4 6

le programme affiche identique en diagonale

1
Exercice n°2 (10pts ) : Gestion des Compétitions Sportives

Un participant à la compétition est identifié par :

• Un Nom (Nom du sportif),


• Le Nombre de médailles obtenues,
• Une Équipe qui est formée par deux champs (Nom du coach et Nom du club).

On se propose dans la suite, après avoir rempli un tableau T1 par N participants


(N ∈ [10..150] ), de former puis afficher un deuxième tableau T2 tel que chaque case
contient un Nom de club ainsi que le nombre total de médailles gagnées par ce
club.

NB : un club n'existe qu'une seule fois dans le tableau.

Exemple :
N=5
T1 SALAH MOHAMED AMIRA WALID FATMA
Nombre de
4 1 3 5 2
médailles
Nom du Coach S. Karim L. Ali S. Karim H. Zied H. Zied
E.S. C.A. E.S.
Nom du Club O. Béja O. Béja
Tunis Africain Tunis

Le tableau T2 à afficher contient :

T2 E.S. Tunis C.A. Africain O. Béja


Total médailles 7 1 7
Questions :

1. Déterminer les structures de données utilisées dans le problème. (Structure de


l'enregistrement, Type de T1 et T2).
2. Écrire l'algorithme du programme principal, solution à ce problème, en le
décomposant en modules.
3. Écrire l'algorithme de chacun des modules envisagés précédemment.

2
Correction DS n°1

Exercice1 : Comparaison de Matrices

Analyse du Problème
Objectif : Comparer deux matrices M et T pour vérifier si elles sont identiques :
• En lignes : toutes les lignes correspondantes sont identiques
• En colonnes : toutes les colonnes correspondantes sont identiques
• En diagonales : les diagonales principale et secondaire sont identiques

TDNT
Matrice = Tableau de 20 lignes * 20 colonnes Entiers

Algorithme du Programme Principal


ALGORITHME ComparaisonMatrices
DEBUT
// Saisie de N pair
SaisirN(n)

// Remplissage des matrices


Remplir (M, n)
Remplir (T, n)

// Affichage des matrices


Écrire_nl ("Matrice M :")
AfficherMatrice (M, n)

Écrire_nl ("Matrice T :")


AfficherMatrice (T, n)

// Vérification d'identité
idLig ← IdentiqueLignes (M, T, n)
idDiag ← IdentiqueDiagonales (M, T, n)

// Affichage du résultat
afficher(idLig ,idDiag)
FIN

TDO glabaux
objet Type/nature
M Matrice
T Matrice
n Entier
idCol Boolèen
idDiag Boolèen
SaisirN procedure
Remplir procedure
AfficherMatrice procedure
IdentiqueLignes fonction

3
afficher procedure
IdentiqueDiagonales fonction

Algorithmes des Modules


Fonction SaisirN
Procedure SaisirN (@n:entier) : Entier
DEBUT
Répéter
Écrire ("Donner N (pair, entre 2 et 20) : ")
Lire (n)
Jusqu'à (n ≥ 2) Et (n ≤ 20) Et (n Mod 2 = 0)
FIN
TDO
objet Type/nature
n Entier

Procédure Remplir (chiffres non nuls : 1 à 9)


Procédure Remplir(@M : Matrice, n : Entier)
DEBUT
Pour i de 0 à n - 1 Faire
Pour j de 0 à n - 1 Faire
M[i, j] ← Aléa(1, 9)
Fin Pour
Fin Pour
FIN
TDO
objet Type/nature
i Entier
j Entier

Procédure AfficherMatrice
Procédure AfficherMatrice (Mat : Matrice, n : Entier)
DEBUT
Pour i de 0 à n - 1 Faire
Pour j de 0 à n - 1 Faire
Écrire (Mat[i, j], " ")
Fin Pour
Écrire_nl ("")
Fin Pour
FIN
TDO
objet Type/nature
i Entier
j Entier

Fonction IdentiqueLignes (recherche)


Fonction IdentiqueLignes (M : Matrice, T : Matrice, n : Entier) : Booléen
DEBUT
id ← Vrai
i←0
Tant que (i < n) Et id Faire

4
j←0
Tant que (j < n) Et id Faire
Si M[i, j] ≠ T[i, j] Alors
id ← Faux
FinSi
j←j+1
Fin Tant que
i←i+1
Fin Tant que
Retourner id
FIN

TDO
objet Type/nature
i Entier
j Entier
id boolèen

Fonction IdentiqueDiagonales
Fonction IdentiqueDiagonales (M : Matrice, T : Matrice, n : Entier) : Booléen
DEBUT
// Vérifier la diagonale principale
idPrinc ← Vrai
i←0
Tant que (i < n) Et idPrinc Faire
Si M[i, i] ≠ T[i, i] Alors
idPrinc ← Faux
FinSi
i←i+1
Fin Tant que

// Vérifier la diagonale secondaire


TDO
idSec ← Vrai
i←0 objet Type/nature
Tant que (i < n) Et idSec Faire i Entier
Si M[i, n - 1 - i] ≠ T[i, n - 1 - i] Alors idPrinc Boolèen
idSec ← Faux idSec boolèen
FinSi
i←i+1
Fin Tant que
Retourner idPrinc Et idSec
FIN

procedure Afficher(idLig, idDiag:boolèen )


Debut
Si idLig Alors
Écrire ("Identique en lignes, colonnes et diagonales")
Sinon Si idDiag Alors
Écrire ("Identique en diagonales")
Sinon
Écrire ("Non identique")
FinSi
Fin

5
Exercice n°2 : Gestion des Compétitions Sportives

Question 1 : Structures de Données


TDNT
------------
Enregistrements
Equipe = Enregistrement
coach : Chaîne de caractères
club : Chaîne de caractères
Fin

Participant = Enregistrement
nom : Chaîne de caractères
nbMed : Entier
equipe : Equipe
Fin
ClubMed = Enregistrement
club : Chaîne de caractères
totalMed : Entier
Fin
Types des Tableaux
Tab1 = Tableau de 150 Participant
Tab2 = Tableau de 150 ClubMed

Question 2 : Algorithme du Programme Principal


ALGORITHME GestionCompetitions
DEBUT
// Saisie du nombre de participants
n ← SaisirN()
// Remplissage du tableau T1
RemplirT (T1, n)
// Formation du tableau T2
m←0
FormerT(T1, n, T2, m)
// Affichage du tableau T2
AfficherT (T2, m)
FIN
TDO globaux
objet Type/Nature
T1 Tab1
T2 Tab2
n Entier
m Entier
RemplirtT procedure
FormerT procedure
AfficherT procedure

Question 3 : Algorithmes des Modules


Fonction SaisirN()
DEBUT
Répéter
Écrire ("Donner le nombre de participants (10..150) : ")

6
Lire (n)
Jusqu'à (n ≥ 10) Et (n ≤ 150)
Retourner n
FIN

Procédure RemplirT
Procédure RemplirT (@T1 : Tab1, n : Entier)
DEBUT
Pour i de 0 à n - 1 Faire
Écrire ("=== Participant n°", i + 1, " ===")

Écrire ("Nom du sportif : ")


Lire (T1[i].nom)

Répéter
Écrire ("Nombre de médailles : ")
Lire (T1[i].nbMed)
Jusqu'à T1[i].nbMed ≥ 0

Écrire ("Nom du coach : ")


Lire (T1[i].[Link])

Écrire ("Nom du club : ")


Lire (T1[i].[Link])
Fin Pour
FIN

TDO
objet Type/Nature
i Entier

Fonction RechercherClub
Fonction RechercherClub (T2 : Tab2, m : Entier, nomClub : Chaîne) : Entier
DEBUT
pos ← -1
i←0
Tant que (i < m) Et (pos = -1) Faire
Si T2[i].club = nomClub Alors
pos ← i
FinSi
i←i+1
Fin Tant que
Retourner pos
FIN

TDO

7
objet Type/Nature
i Entier
pos Entier

Procédure FormerT
Procédure FormerT (T1 : Tab1, n : Entier, @T2 : Tab2, @m : Entier)
DEBUT
m←0
Pour i de 0 à n - 1 Faire
nomClub ← T1[i].[Link]
pos ← RechercherClub(T2, m, nomClub)
Si pos = -1 Alors
// Le club n'existe pas encore, on l'ajoute
T2[m].club ← nomClub
T2[m].totalMed ← T1[i].nbMed
m←m+1
Sinon
// Le club existe déjà, on cumule les médailles
T2[pos].totalMed ← T2[pos].totalMed + T1[i].nbMed
FinSi
Fin Pour
FIN

TDO
objet Type/Nature
i Entier
pos entier
nomClub chaine

Procédure AfficherT
Procédure AfficherT(T2 : Tab2, m : Entier)
DEBUT
Écrire_nl ("========================================")
Écrire_nl (" RÉCAPITULATIF PAR CLUB ")
Écrire_nl ("========================================")

// Afficher les noms des clubs


Écrire ("Clubs : ")
Pour i de 0 à m - 1 Faire
Écrire (T2[i].club, " ")
Fin Pour
Écrire_nl ("")

// Afficher le total des médailles


Écrire ("Total médailles: ")

8
Pour i de 0 à m - 1 Faire
Écrire (T2[i].totalMed, " ")
Fin Pour
Écrire_nl ("")

Écrire_nl ("========================================")
FIN

TDO
objet Type/Nature
i Entier

Vous aimerez peut-être aussi