28
Algorithmique et structures de données I Page 1 Séries des exercices Première partie 1

Algorithmique et structures de données I Séries des exercices

Embed Size (px)

Citation preview

Algorithmique et structures de données I

Page 1

Séries des exercices

Première partie

1

Algorithmique et structures de données I

Page 2

Exercice 1 :

La famille Ben Abdallah est assez spéciale. En effet, 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 fut 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 verre de Mahmoud).

Comment les aider à satisfaire 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 forme d’un programme informatique. Pour être sur de la solution, nous devions tout d’abord cerner ce problème.

I. Définition du problème a. De quel problème vu au cours s’agit-il ?

b. Quel est le nombre d’objets en entrée ? c. Quel est le nombre d’objets en sortie ? d. Quel est le nombre de variables pour arriver à une solution ?

II. Analyse du problème : Décrire les étapes nécessaires pour être sure que l’inversion du contenu a été faite.

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)

Série1 : Initiation à l’algorithmique

Algorithmique et structures de données I

Page 3

| Lire (B) | S <- A + B | Ecrire (S) Fin

Algorithmique et structures de données I

Page 4

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.

Algorithmique et structures de données I

Page 5

Exercice 1

NOMBRE, 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 informations suivantes:

• Le nombre d'étudiants par groupe

• Le nombre de buts marqués dans un match de football

• 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

2

+ 3 Exercice 4: Quel est le résultat de ces affectations

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

Série 2: Les types de données

Algorithmique et structures de données I

Page 6

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

(remboursement de la dette sociale).

Exercice 6

Ecrire un algorithme qui saisit deux nombres entiers et les affiche sous forme d’un nombre décimal .

Algorithmique et structures de données I

Page 7

Exercice1 :

Écrire un algorithme qui permet de lire au clavier un entier et d'afficher à 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'afficher 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.

Surface= 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 positifs

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 entiers

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.

Série 3: Les opérations simples

Algorithmique et structures de données I

Page 8

Exercice 1

Écrire un algorithme qui permet de lire la moyenne d'un étudiant et d'afficher 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

Écrire un algorithme qui permet de résoudre une équation du second degré à une seule inconnue (ax2

+ bx + c = 0). Les entrées sont les coefficients 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

coefficient K de la manière suivante:

• Pour 39 heures de travail par semaine, K = 1.

• De la 40ème à la 44ème heure par semaine, K = 1,5.

• Après la 44ème 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 fonction

de son revenu imposable (Rimp) et son nombre de parts fiscales (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 (Impart) 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.

Série 4 : Les structures conditionnelles

Algorithmique et structures de données I

Page 9

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 affiche "Jour de travail" ou "Week-end" selon le jour.

Exercice 6

Écrire un algorithme qui permet d'effectuer 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 divisibles 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 chiffres 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.

- Divise le résultat par 7

- Regarde le reste de la division : si c'est un 0, tu es né un dimanche ; si c'est un 1, tu es né un lundi ; si

c'est un 2, tu es né un mardi ; ... 6 tu es né samedi.

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.

Algorithmique et structures de données I

Page 10

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 affiche le vainqueur.

Algorithmique et structures de données I

Page 11

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 affiche à l'écran tous les

cubes

Exercice 3

On 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 faut-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 effectue 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, n

2,…..n

n) obtenus de cette manière n

i=1..n =a*i (a est une

constante de valeur égale à 3).

Exercice 5

Ecrire un algorithme qui affiche 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 affiche la somme de deux temps valides (en heure/minute) saisis par

l’utilisateur.

Exercice 7

Série5: Les structures répétitives

Algorithmique et structures de données I

Page 12

Écrire un algorithme qui permet de calculer la somme des chiffres 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 autre 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 affiché félicitant le joueur. Sinon on lui indique

que ce qu’il a donné est plus grand ou plus 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, le

programme est arrêté et un message d’échec est affiché pour l’utilisateur

Algorithmique et structures de données I

Page 13

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 la

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 afficher 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 exactement 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).

Série 6 : Les tableaux

Algorithmique et structures de données I

Page 14

Exercice 1

Écrire un algorithme qui compte les occurrences d'un caractère dans un tableau de caractères.

Exercice 2

On 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 minuscules

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

superflus: chaque fois que l'on trouve une suite d'espaces, il faudra les éliminer tous sauf un. Sachant

que le premier caractère du tableau et le dernier sont différent d’espace.

Série 7 : les chaines de caractères

Algorithmique et structures de données I

Page 15

Devoirs surveillés

Deuxième partie

2

Algorithmique et structures de données I

Page 16

Exercice1 (12 points) : 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 : ’T’, ’TI’, ’TIM’, ’TIMO’,’TIMOL’, ’TIMOLE’,’TIMOLEO’ et ’TIMOLEON’. Si S1= ’TIMO’ préfixe Si S1=’TIMOM’ce n’est pas un préfixe

Devoir surveillé n° 1 (2009-2010)

Algorithmique et structures de données I

Page 17

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") Lire (T1 [0]) nb T1 [0] Pour i De 1 à n - 1 Faire

Répéter Ecrire ("Donnez un entier") Lire (T1 [i])

Jusqu'à (T1 [i] > nb) nb T1 [i]

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]

FinPour i 0 j 0 k 0 TantQue (i < n1 Et < n2) Faire

Si (T1 [i] < T2 [j]) Alors T [k] T1 [i] i i + 1

Sinon T [k] T2 [j] j j + 1

FinSi k k + 1 FinTantQue TantQue (i < n1) Faire

T [k] T1 [i] i i + 1 k k + 1

Correction du devoir surveillé n° 1

Algorithmique et structures de données I

Page 18

FinTantQue

TantQue (j < n1) Faire T [k] T2 [j] 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") Lire (ch1) i 0 prefixe 1 TantQue (i < longueur (ch1) Et prefixe = 1) Faire

Si (ch1 [i] = ch2 [i]) Alors i i + 1

Sinon prefixe 0

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

Algorithmique et structures de données I

Page 19

Devoir surveillé n° 2 avec correction (2012-2013)

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:

1. On divise (division entière) le nombre X par 2.

2. On sauvegarde le reste de la division.

3. On refait les deux étapes précédentes, jusqu’à avoir un quotient nul.

4. Le regroupement des restes en sens inverse de leurs apparitions donne la valeur du nombre X en binaire.

Exemple:

Si X=13 alors

la division entière de 13 par 2 donne un quotient =6 et un reste = 1

la division entière de 6 par 2 donne un quotient =3 et un reste = 0

la division entière de 3 par 2 donne un quotient =1 et un reste = 1

la division entière de 1 par 2 donne un quotient =0 et un reste = 1

Donc le nombre décimal 13 vaut 1101 en binaire.

{ Algorithme EXERCICE1

Var x, n , i (entier)

T(tableau [1..20] d’entier)

Debut

Répéter

ecrire(« donner l’entier à coder »)

lire(x)

jusqu’à (x≥0)

n 1

tant que (x<>0) faire

T[n]<-x mod 2;

Algorithmique et structures de données I

Page 20

X<-x div 2;

n<-n+1;

fin tant que

pour i de n-1 à 1 (par pas de -1) faire

ecrire(T[i])

fin 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,

Exemple : Tableau de symétrie 3

1 3 6 3 2 5 3 3 1 1

Symétrie de degré 3

Algorithme EXERCICE2

Var n , i, j, symetrie , s1, s2(entier) 0.5 pt

T(tableau [1..20] d’entier) 0.5pt

Debut

Repeter

Ecrire (« Donner la taille de tableau »)

Lire (n)

(Jusqu'à n>2)

pour i de 1 à n faire (1pt)

Ecrire (« Donner l’élément »,i)

Lire(T[i])

Fin pour

i<--- 1

Algorithmique et structures de données I

Page 21

symetrie <--- 0

Tantque ((i≤n-6)et(symetrie=0)) faire

s10

s20

pour j de i à i+2 faire

s1s1+T[j]

s2s2+ T[j+3]

fin pour

si (s1=s2) alors

symetrie1

Si non i <- i+1

finsi

fin tantque

si (symetrie=1) alors ecrire (« le tableau est symetrique d’ordre 3 ») 1pt

sinon ecrire (« le tableau n est pas symetrique d’ordre 3 »)

FIN

Algorithmique et structures de données I

Page 22

Sujets Des Examens

Troisième

partie

3

Algorithmique et structures de données I

Page 23

Exercice 1 (4 points) :

Écrire une procédure en algorithmique qui permet d’afficher 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.

Procédure Affichage (T (Tableau [1..100] de caractère), N : entier)

Var

i (entier)

Début

Pour i de 1 à N/2 Faire

Écrire (T [ i ])

Écrire (T [ N-i+1 ])

Fin Pour

Si (N mod 2 <> 0) alors

Écrire (T [ N/2+1])

FinSi

Fin

Examen corrigé N°1

(2012/2013)

Algorithmique et structures de données I

Page 24

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

Fonction NbreOcc (T (Tableau [1..100] de entier), N (entier), V (entier)) : Entier

Var i, Nb (entier)

Début

Nb 0

Pour i de 1 à N faire

Si (T [i] = V) alors Nb Nb +1 FinSi

FinPour

NbreOcc Nb

Fin

Procédure Memes ( T1 (Tableau [1..100] de entier), N1 (entier), T2 (Tableau [1..100] de entier), N2 (entier),

VAR T3 (Tableau [1..100] de entier), N3 (entier))

Algorithmique et structures de données I

Page 25

Var i (entier)

Début

N3 0

Pour i de 1 à N1 faire

Trv FAUX

j i-1

Tant ((j > 0) ET (Non Trv)) faire

Si (T1 [j] = T1[i]) alors Trv = VRAI FinSi

j j - 1

Fin Tant que

Si (Non Trv) alors

N1 NbreOcc (T1, N1, T1 [i])

N2 NbreOcc (T2, N2, T1 [i])

Si (N1 = N2) alors

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 :

Algorithmique et structures de données I

Page 26

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 affiche 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

C 0

Trouve FAUX

i 1

Tant que ((Non Trouve) ET (i < =N)) faire

j 1

Tant que ((Non Trouve) ET (j <= N)) faire

// Est-ce que la ligne i et la colonne j sont identiques ?

k 1

Egal VRAI

Tant que (Egal ET (k <= N)) faire

Si (T [i][k] <> T [k][j]) alors Egal FAUX FinSi

k k + 1

Fin tant que

Si (Egal) alors Trouve VRAI FinSi

j j + 1

Fin tant que

Algorithmique et structures de données I

Page 27

i i + 1

Fin tant que

Si Trouve alors

L i-1

C j-1

FinSi

Fin

Algorithmique et structures de données I

Page 28

Références

http://www.siteduzero.com/ R. Malgouyres, F. Feschet, Z. Zrour. Algorithmique et structures de données en C 2011.