Correction TDs Algorithme Avancée 1-8
Correction TDs Algorithme Avancée 1-8
Fait par :
CHOHAIDI ABDESSAMAD
Email : [email protected]
Blog : https://brain-hub1.blogspot.com
Instagram : https://www.instagram.com/your_mark_style/
0
TD1
Exercice1 : Exercice2 :
Algorithme Triangle
Algorithme Matrice
Variables
Variables
N, i, j :Entiers
Tableau Matrice[5][6] : Réels
Début
Somme, Produit, Moyenne : Réels
Ecrire(‘’Entre le nombre de lignes’’)
i, j :Entiers Lire(N)
Début Pour i allant de 1 à N faire
Pour i allant de 0 à 4 faire Pour j allant de 1 à 2*i-1 faire
Pour j allant de 0 à 5 faire Ecrire(‘’ * ‘’)
Ecrire(‘’Veuillez saisir l’élément de tableau’’)
Lire(Matrice[5][6]) FinPour
FinPour FinPour
Somme 0 Fin
Produit 1
FinPour Début
Occ Occ + 1
FinSi
FinPour
……..
CHOHAIDI Abdessamad 1
Manipulation des pointeurs
Exercice1 :
……..
P2&c
a(2+*P2) * (*P1)
*P1*P2-c
(*P2)- -
*P1*P1-2*(*P2)
P2&b
P1P2
(*P2)++
*P1*P2
P2&c
P1&a
Init.
Si Occ =0 Alors
Sinon
FinSi
a
3
3
3
3
3
3
3
3
3
1
1
1
Fin
b
1
1
1
1
2
2
2
2
2
2
2
2
Exercice4 :
1
1
1
0
0
4
4
4
3
3
3
3
c
&a
F0
F0
F0
F0
F0
F0
F0
F0
F0
F0
F0
F0
Algorithme Produit deux matrices
&b
F4
F4
F4
F4
F4
F4
F4
F4
F4
F4
F4
F4
Variables
&c
F8
F8
F8
F8
F8
F8
F8
F8
F8
F8
F8
F8
Tableau A[10][10] , B[10][10] , C[10][10] : Réels
I, j, k, n :Entiers
Début
P1
F8
F8
F8
F8
F8
F8
F8
F0
F0
F0
F0
//on suppose que les Matrices sont déjà remplies
P2
F8
F4
F4
F4
F4
F4
F8
F8
F8
F8
*P1
1
1
1
0
0
4
4
3
3
1
1
C[i][j] 0
Exercice2 :
Pour k allant de 1 à n faire
Id Adresse Valeur
C[i][j] C[i][j] + A[i][k] *B[k][j]
2004
FinPour a ………
2007
8𝑡 /281𝑡+1
FinPour 2008
FinPour
Pa ……….
2011
2004
2012
Fin X ………..
2019
3.14
2020
P ……….
2023
2008
CHOHAIDI Abdessamad
2
TD2
Exercice1 : Exercice2 :
A) A)
B) P:* Entier
1) P (Tab+1)
Id Adresse Valeur 1. La difference sera 4 octets
2. La difference sera 1 octet
a 1000 𝟐𝒕 /𝟑𝒕+𝟏
b 1004 𝟑𝒕 /𝟐𝒕+𝟏
z 1008 2 Exercice3 :
x 1012 1000
y 1016 1004
Id Adresse Nbr octet Ext 1 Ext 2 Ext 3
a 1000 4 10 10 10
2)
b 1004 4 5 5 5
Id Adresse Valeur
T[0] 1008 4 1 10 5
a 1000 2
1004 T[1] 1012 4 2 5 10
b 3
x 1008 1000 T[2] 1016 4 3 3 5
y 1012 1004 1012
P_int 1020 4 -- 1016
1016 1008
z -----
CHOHAIDI Abdessamad
3
Exercice4 : Exercice5 :
Libérer (Note)
Fin
CHOHAIDI Abdessamad
4
TD3
Exercice1 : Exercice3 :
Exercice2 :
Exercice4 :
Algorithme Maj-Min
Variables Algorithme Renverser
X : Caractere Variables
Début Ch : Chaine
Ecrire(‘’Entre un caractere:’’) X : Caractere
Lire(x) n ,i : Entier
Si (x >=’a’ et x <= ‘z’) Alors Début
Ecrire(‘’C’est une lettre minuscule’’) Ecrire(‘’Entre un chaine :’’)
Sinon Lire(Ch)
Si (x >= ’A’ et x <= ‘Z’) Alors n Longueur (Ch)
Ecrire(‘’C’est une lettre majuscule’’) Pour i allant de 0 à n/2 faire
Sinon X Ch[i]
Si (x >= ’0’ et x <= ‘9’) Alors Ch[i] Ch[n-i+1]
Ecrire(‘’C’est un chiffre’’) Ch[n-i+1] X
Sinon FinPour
Ecrire(‘’C’est un caractere speciale ’’) Fin
FinSi
FinSi
FinSi
Fin
CHOHAIDI Abdessamad
5
Exercice5 :
Fonction Taille (ch : Chaine) : Entier
Variable i : Entier
Début
Procedure test i 0
Variables Ch1 ,Ch2 : Chaine TantQue (ch[i] <> Null ) faire
i , N : Entiers i i+1
P : Booleen FinTantQue
Début Retourne i
Ecrire(‘’Saisir la petite chaine : ’’) FinFonction
Lire(ch2)
Ecrire(‘’Saisir la chaine : ’’)
Lire(ch1)
N Longueur (Ch2)
B)
i 0
P Vrai
TantQue i < n et P = Vrai faire
Algorithme ____
Si Ch1[i] <> Ch2[i] Alors
P Faux // Déclaration de la fonction Saisir
FinSi
// Déclaration de la fonction Taille
i i+1
FinTantQue Variables N, i , j : Entiers
Si P = vrai alors
Ecrire(‘’la premiere chaine est commance par Ch : Chaine
la deuxieme ’’) Début
Sinon
Ecrire(‘’Erreur’’) Ch Saisir(ch)
FinSi N Taille(ch)
Fin
Pour i allant de 0 à N-1 faire
Ecrire(ch[i])
Exercice6 :
FinPour
A)
FinPour
Fonction Saisir () : Chaine Fin
Variable ch : Chaine
Début
Ecrire(‘’Saisir une chaine : ’’)
Lire(ch)
Retourne (ch)
FinFonction
CHOHAIDI Abdessamad
6
TD4
Exercice1 : Exercice4 :
Id Adresse Valeur
Algorithme Difference-Temp
X 1000 1 Variables t1,t2, J, H, M, S,Diff : Entiers
Y 1004 𝟐𝒕 /𝟏𝟎𝟐𝒕+𝟏 //Déclaration de Procédure TransforationTemps
CHOHAIDI Abdessamad
7
Exercice6 : TD5
Exercice1 :
Procedure Maj-Min(tab : *Entier, n : Entier)
Variables i , Max, Min: Entiers
Début Procedure Saisir (tab : *Réel, n : Entier)
Max tab[0] Variables i : Entier
Min tab[0] Début
Pour i allant de 0 à n-1 faire
Pour i allant de 0 à n-1 faire Ecrire(‘’Entre les éléments du tableau:’’ )
Si ( tab[i] > Max ) Alors Lire(tab[i])
Max tab[i] FinPour
FinSi Fin
Si ( tab[i] < min ) Alors
Min tab[i]
FinSi
FinPour Fonction Moyenne (tab : *Réel, n : Entier) :
Ecrire(‘’Le Min:’’ ,Man) Entier
Ecrire(‘’Le Max:’’ ,Max) Variables i ,N : Entiers
Fin Début
N 0
Pour i allant de 0 à n-1 faire
Exercice7 : Si ( tab[i] >= 10 ) Alors
N N+1
FinSi
Fonction Trie (t : *Entier, n : Entier) : Entier FinPour
Variables Trier : Booleen Retourne (N)
i : Entier Fin
Début
Trier Vrai
i 0
TantQue ( i < n et Trier = Vrai ) faire Procedure Copier (tab1,tab2 : *Réel, n : Entier)
Si ( t[i] > t[i+1] ) Alors Variables i,j : Entiers
Trier faux Début
FinSi J 0
i i+1 Pour i allant de 0 à n-1 faire
Si ( tab1[i] >= 10 ) Alors
FinTantQue Tab2[j] tab1[i]
J j+1
Retourne Trier
FinSi
Fin FinPour
Fin
CHOHAIDI Abdessamad
8
Algorithme Principale-Ex1 Algorithme Principale-Ex2
//Déclaration de Procédure Saisir //Déclaration de Procédure Trier
//Déclaration de Procédure Copier Variables tab : * Entier
//Déclaration de fonction Moyenne
n : Entier
Variables tab1,tab2 : *Réel
Début
n1,n2 : Entiers
Ecrire(‘’Entre la taille du tableau : ’’ )
Début
Lire(n)
Ecrire(‘’Entre la taille du tableau : ’’ )
Allouer (tab, n, Entier)
Lire(n1)
Pour i allant de 0 à n-1 faire
Allouer (tab1, n1, Réel)
Ecrire(‘’Saisir T[’’,i,’’]=’’)
Saisir(tab1,n1)
Lire(tab[i])
n2 Moyenne (tab1,n1)
FinPour
Allouer (tab2, n2, Réel)
Pour i allant de 0 à n-1 faire
Copier(tab1,tab2,n1)
Ecrire(Tab[i])
Libérer(tab1)
FinPour
Libérer(tab2)
Trier(tab,n)
Fin
Pour i allant de 0 à n-1 faire
Ecrire(Tab[i])
FinPour
Exercice2 :
Libérer(tab)
Fin
Procedure Trier (tab : * Entier, n : Entier)
Variables i,j,Max,Temp,p : Entiers
Début Exercice3 :
Pour i allant de 0 à n-1 faire
Max tab[i]
Fonction Puissance ( X, n : Entiers) : Entier
Pour j allant de i à n-1 faire
Début
Si ( tab[j] >= Max ) Alors
Si ( n = 0 ) Alors
max Tab[j]
Retourne (1)
p j
Sinon
FinSi
Retourne ( X * Puissance(X ,n-1) )
FinPour
FinSi
Temp tab[i]
tab[i] tab[p]
Fin
tab[p] Temp
FinPour
Pour i allant de 0 à n-1 faire Exercice4 :
Ecrire(Tab[i])
FinPour Fonction Somme ( n : Entiers) : Entier
Début
Fin Si ( n = 1 ) Alors
Retourne (1)
Sinon
Retourne ( n + Somme(n-1) )
FinSi
Fin
CHOHAIDI Abdessamad
9
Exercice5 :
CHOHAIDI Abdessamad
10
Fonction Recherche ( tab : *Etudiant, n : Fonction Saisir-Doctorant ( ) : Doctorant
Entier,Cod : Entier) : Etudiant Variables Doc : Doctorant
Variables i : Entiersx Début
Etd : Etudiant Ecrire(‘’Entre le nom :’’)
P : Booléen Lire(Doc.Nom)
Début Ecrire(‘’Entre La date : jour :’’)
P Vrai Lire(Doc.Date-insc.Jour )
i 0 Ecrire(‘’Entre la date : moi ’’)
Etd Null Lire(Doc.Date-insc.Moi )
TantQue( i < n ET P=Vrai) faire Ecrire(‘’Entre la date : Année :’’)
Si (tab[i].Code = Cod) Alors Lire(Doc.Date-insc.Année)
Etd tab[i] Ecrire(‘’Entre le Sujet :’’)
P Faux Lire(Doc.Sujet)
FinSi
i++ Retourne ( Doc)
FinTantQue Fin
Retourne(Etd)
Fin
Procédure Saisir-Equipe (equipe : *T-equipe)
Variables i : Entier
Exercice3 : Début
Ecrire(‘’Entre le nom :’’)
Type Structure Date Lire(*equie.Nom)
Jour : Entier Pour i allant de 0 à 4 faire
Moi : Entier *equipe.doctorants[i] Saisir-Doctorant ()
Année : Entier FinPour
FinStruct Ecrire(‘’Entre Le domaine :’’)
Lire(*equipe.Domaine)
Ecrire(‘’Entre le nombre article’’)
Lire(*equipe. Nbr-Article )
Type Structure Doctorant
Nom : Chaine
Fin
Date-insc : Date
Sujet : Chaine
FinStruct
Procédure Remplir-Equipes (equipe : *T-equipe)
Variables i : Entier
Début
Type Structure T-equipe Pour i allant de 0 à 9 faire
Nom : Chaine Saisir-Equipe(&equipe[i])
Tableau doctorants [5] : Doctorant FinPour
Domaine : Chaine
Nbr-Article : Entier Fin
FinStruct
CHOHAIDI Abdessamad
11
Fonction Retourne-Equipes (equipe : *T- TD7
equipe, nom : Chaine ) : T-equipe
Variables i : Entier Exercice1 :
Début
Pour i allant de 0 à 9 faire
Si *(equipe+i).Nom = nom Alors Algorithme Remplir-Fichier
Retourne(*(equipe+i)) Type Structure Article
FinSi Code : Chaine
FinPour Désignation : Chaine
Retourne NULL Quantité : Entier
Fin PV : Réel
PA : Réel
FinStruct
Variables i ,n : Entier
Art : Article
F1 : Fichier
Début
Ecrire(‘’Entre Le nombre d’article : ’’)
Lire(n)
F1 Ouvrire(‘’article.csv’’,Ecriture)
Pour i allant de 0 à n-1 faire
Ecrire(‘’Entre Le Code: ’’)
Lire(Art.Code)
Ecrire(‘’Entre La Désignation : ’’)
Lire(Art.Désignation)
Ecrire(‘’Entre La Quantité: ’’)
Lire(Art.Quantité)
Ecrire(‘’Entre Le PV: ’’)
Lire(Art.PV)
Ecrire(‘’Entre Le PA :’’)
Lire(Art.PA)
Ecrire_Fichier(F1 ,Art)
FinPour
Fermer(F1)
Fin
CHOHAIDI Abdessamad
12
Exercice2 :
Algorithme Affichier-Fichier
Type Structure Article
Code : Chaine Type Structure Adresse
Désignation : Chaine Postale : Entier
Quantité : Entier Numéro : Entier
PV : Réel FinStruct
PA : Réel
FinStruct Structure Hotel
Variables i ,n : Entier Code : Entier
Art : Article Nom : Chaine
Début Ville : Chaine
Ouvrire(‘’article.csv’’,2,Lecture) Disponibilité : Booléen
i 0 AdreesseH : Adresse
TantQue Non FF (2) faire FinStruct
Lire_Fichier(2 ,Art)
Ecrire(‘’ Le Code: ’’, Art.Code)
Ecrire(‘’ La Désignation : ’’, Art.Désignation)
Ecrire(‘’ La Quantité: ’’, Art.Quantité) Procedure Hotel-Disp (Nom-fich : Chaine)
Ecrire(‘’ Le PV: ’’, Art.PV) Variables Hot : Hotel
Ecrire(‘’ Le PA :’’, Art.PA) NbrHotel : Entier
i i+1 Début
FinTantQue NbrHotel 0
Fermer(2) Ouvrire(‘’Nom-fich’’,2,Lecture)
Fin TantQue Non FF (2) faire
Lire_Fichier(2 ,Hot)
Si Hot.Disponibilité = Vrai Alors
NbrHotel++
Fonction Trouve-PV (Nom-fich : Chaine,
Ecrire(Hot.Nom,‘’ est disponible \n’’)
codeArt: Chaine ) : Réel
FinSi
Variables Art : Article
FinTantQue
State : Booléen
Ecrire(‘’ Le nombre de Hotel disponible : ’’,
Début
NbrHotel )
State Faux
Fermer(2)
Ouvrire(‘’Nom-fich’’,3,Lecture)
Fin
TantQue Non FF (3) ET State = Faux faire
Lire_Fichier(2 ,Art)
Si Art.Code = codeArt Alors
State Vrai
FinSi
FinTantQue
Si State = Vrai Alors
Fermer(3)
Retourne Art.PV
Sinon
Fermer(3)
Retourne 0
Fin
CHOHAIDI Abdessamad
13
Fonction Hotel-Disp (Nom-fich : Chaine, Procédure SaisieGrpEtd (Nom-fich : Chaine ,
code : Entier) : Booleen N :Entier )
Variables Hot : Hotel Variables i : entier
Début Début
Ouvrire(‘’Nom-fich’’,4,Lecture) Ouvrire(‘’Nom-fich’’,5,Ecriture)
TantQue Non FF (4) faire Pour i allant de 0 à N-1 faire
Lire_Fichier(4 ,Hot) Ecrire_Fichier(5, SaisieEtd() )
Si Hot.Code = code Alors FinPour
Fermer(4) Fermer(5)
Retourne Hot.Disponibilité Fin
FinSi
FinTantQue
Fermer(4) Fonction Recherche (Nom-fich : Chaine,
Retourne Faux num : Entier) : Booleen
Fin Variables Td : Teld
Début
Ouvrire(‘’Nom-fich’’,1,Lecture)
TantQue Non FF (1) faire
Exercice3 : Lire_Fichier(1 ,Td)
Si Td.Numéro = num Alors
Fermer(1)
Retourne Vrai
Fonction SaisieEtd () : Teld FinSi
Variables Etd : Teld FinTantQue
i : entier Fermer(1)
Début Retourne Faux
Ecrire(‘’Entre le nom :’’) Fin
Lire(Etd.Nom)
Ecrire(‘’Entre Le numéro :’’)
Lire(Etd.Numéro )
Fonction Moyenne (Nom-fich : Chaine,
Pour i allant de 0 à 4 faire
n : Entier) : Réel
Ecrire(‘’Entre la note :’’,i+1)
Variables Etd : Teld
Lire(Etd.Notes[i])
Somme : Réel
FinPour
i : Entier
Ecrire(‘’Entre la Moyenne :’’)
Début
Lire(Etd.Moyenne)
Somme 0
Ouvrire(‘’Nom-fich’’,2,Lecture)
Retourne ( Etd)
Pour i allant de 0 à n-1 faire
Fin
Lire_Fichier(2 ,Etd)
Somme Somme + Etd.Moyenne
FinPour
Fermer(2)
Retourne Somme/n
Fin
CHOHAIDI Abdessamad
14
TD8
1-Recherche séquentielle :
Algorithme en O (n)
2-Recherche dichotomique :
𝒏 = 𝟖 = 𝟐𝟑 Tableau du 8 éléments 3 Comparaison
Itération1
Itération2
Itération3
15