Vous êtes sur la page 1sur 5

CFPA Mixte Younes Lekhel Bejaia

Section : T.S Informatique, option bases de données Date : 08/01/2019


Matière : Algorithmique, série de travaux dirigés n° 3.2 PSFEP: Mr Boudries

Exercice 1:
Écrire un algorithme qui transforme un tableau d'entiers d'une dimension, vers son miroir.
Exemple :
Tableau : 0, 1, 5, 12, 9 Miroir : 9, 12, 5, 1, 0

Algorithme Exo1;
Var i, N, fin, interm: entier;
T: tableau[1..50] de entier;
Début
Répeter //Demander à l'utilisateur le nombre d'éléments du tableau
Écrire ('Saisissez un nombre d'éléments du tableau, compris entre 1 et 50' ); Lire(N);
Jusqu'à (N≥1) et (N≤50);

Pour i allant de 1 à N faire //Saisie des éléments, en fonction du nombre d'éléments N saisi précédemment
Écrire ('Veuillez saisir l'élément n° :', i); Lire(T[i]);
Fpour;

//On parcourt le tableau jusqu'à sa moitié (N div 2), tout en permutant les premiers éléments du tableau avec les derniers
i1; finN div 2;
Tant que i≤ fin faire
interm T[i]; //On stock la valeur de T[i] dans une variable intermédiaire, pour permuter plus tard
T[i]T[N-i+1] ;
T[N-i+1]interm ;
ii+1 ; //Incrémentation de l'indice i, utilisé pour le parcours
FTQ;
Fin.

Exercice 2:
Écrire l’algorithme effectuant le décalage à gauche et à droite des éléments d’un tableau.
Votre algorithme demandera d'abord à l'utilisateur quel décalage il souhaite réaliser, puis il affichera le tableau initial, ainsi
que le tableau modifié.
Exemple: Tableau initial:
Tableau modifié (déclalage à gauche):

Algorithme Exo2;
Var i, N: entier;
dec, interm: char;
T: tableau[1..50] de char;
Début
Répeter //Demander à l'utilisateur le nombre d'éléments du tableau
Écrire ('Saisissez un nombre d'éléments du tableau, compris entre 1 et 50' ); Lire(N);
Jusqu'à (N≥1) et (N≤50);

Pour i allant de 1 à N faire //Saisie des éléments, en fonction du nombre d'éléments N saisi précédemment
Écrire ('Veuillez saisir l'élément n° :', i); Lire(T[i]);
Fpour;

Répeter //Demander à l'utilisateur le décalage qu'il veut


Écrire ('Saisissez G pour un décalage à gauche, D pour un décalage à droite:'); Lire(dec);
Jusqu'à (dec='D') ou (dec='G');

Pour i allant de 1 à N faire //Affichage du tableau initial


Écrire (T[i]);
Fpour;

1
CFPA Mixte Younes Lekhel Bejaia

Section : T.S Informatique, option bases de données Date : 08/01/2019


Matière : Algorithmique, série de travaux dirigés n° 3.2 PSFEP: Mr Boudries

Si dec='G' alors //Décalage à gauche


intermT[1];
Pour i allant de 1 à N-1 faire
T[i]T[i+1] ;
Fpour;
T[N]interm;
Sinon //Décalage à droite
intermT[N];
Pour i allant de 1 à N-1 faire
T[N-i+1]T[N-i] ;
Fpour;
T[1]interm;
Fsi;

Pour i allant de 1 à N faire //Affichage du tableau modifié


Écrire (T[i]);
Fpour;
Fin.

Exercice 3:
Écrire un algorithme qui calcule le plus grand écart dans un tableau d’entiers. L’écart entre deux entiers x et y est la valeur
absolue de leur différence |x − y|.
Si le tableau est rempli exclusivement de valeurs négatives, l'écart sera 0.

Algorithme Exo3;
Var i, N: entier;
T: tableau[1..50] de entier;
max, min, ecart : entier;
Début
Répeter //Demander à l'utilisateur le nombre d'éléments du tableau
Écrire ('Saisissez un nombre d'éléments du tableau, compris entre 1 et 50' ); Lire(N);
Jusqu'à (N≥1) et (N≤50);

Pour i allant de 1 à N faire //Saisie des éléments, en fonction du nombre d'éléments N saisi précédemment
Écrire ('Veuillez saisir l'élément n°:', i); Lire(T[i]);
Fpour;

//Chercher le min et le max du tableau d'abord, l'écart sera la différence entre le min et le max
minT[1]; maxT[1];
Pour i allant de 2 à N faire //Parcours de tout le tableau
Si T[i]<min alors //A chaque fois qu'on trouve un élément inferieur à min, cet élément devient le nouveau min
minT[i];
Fsi;
Si T[i]>max alors //A chaque fois qu'on trouve un élément supérieur à max, cet élément devient le nouveau max
maxT[i];
Fsi;
Fpour;

Si (max≤ 0) et (min≤0) alors //Cas ou le tableau ne contient que des valeurs négatives ou nulles
ecart0;
Sinon
ecartmax-min;
Fsi;
Écrire (' L'écart est : ', ecart);
Fin.
2
CFPA Mixte Younes Lekhel Bejaia

Section : T.S Informatique, option bases de données Date : 08/01/2019


Matière : Algorithmique, série de travaux dirigés n° 3.2 PSFEP: Mr Boudries

Exercice 4:
𝑖=𝑛
Écrire un algorithme qui calcul du produit scalaire de deux vecteurs réels U et V de dimension N. U*V = 𝑖=1 𝑈 𝑖 ∗ 𝑉[𝑖]
Exemple:
U : 1, 5, 0
V : 7, 9, 8,
produit scalaire U*V = 1*7+5*9+0*8=52

Algorithme Exo4;
Var i, N: entier;
U, V: tableau[1..50] de réel;
PS: réel;
Début
Répeter //Demander à l'utilisateur le nombre d'éléments des vecteurs U et V
Écrire ('Saisissez le nombre d'éléments d'un des deux vecteurs, compris entre 1 et 50' ); Lire(N);
Jusqu'à (N≥1) et (N≤50);

Pour i allant de 1 à N faire //Remplissage du tableau U par l'utilisateur


Écrire (' Vecteur U: Veuillez saisir l'élément n° : ', i); Lire(U[i]);
Fpour;

Pour i allant de 1 à N faire //Remplissage du tableau V par l'utilisateur


Écrire (' Vecteur V: Veuillez saisir l'élément n° : ', i); Lire(V[i]);
Fpour;

//Calcul du produit scalaire, comme indiqué


PS0;
Pour i allant de 1 à N faire
PS  PS +U[i] + V[i];
Fpour;
Écrire (' Le produit scalaire des deux vecteurs est : ', PS);
Fin.

Exercice 5:
Écrire un algorithme qui concatène deux tableaux T1 et T2 (pas forcement de même taille), dans un 3eme tableau T3.
Exemple:
Tableau 1 : 1, 5, 0, 0, 0, 1
Tableau 2 : 7, 9, 8, 0, 15, 10,13
Tableau 3 : 1, 5, 0, 0, 0, 1, 7, 9, 8, 0, 15, 10,13

Algorithme Exo5;
Var i, N1, N2, N3: entier;
T1, T2: tableau[1..50] d'entiers;
T3: tableau[1..50] d'entiers;;
Début
Répeter //Demander à l'utilisateur le nombre d'éléments du tableau T1
Écrire ('Saisissez le nombre d'éléments du tableau T1, compris entre 1 et 50' ); Lire(N1);
Jusqu'à (N1≥1) et (N1≤50);

Répeter //Demander à l'utilisateur le nombre d'éléments du tableau T2


Écrire ('Saisissez le nombre d'éléments du tableau T2, compris entre 1 et 50' ); Lire(N2);
Jusqu'à (N2≥1) et (N2≤50);

Pour i allant de 1 à N1 faire //Remplissage du tableau T1 par l'utilisateur


Écrire (' Tableau T1: Veuillez saisir l'élément n° : ', i); Lire(T1[i]);
Fpour;
3
CFPA Mixte Younes Lekhel Bejaia

Section : T.S Informatique, option bases de données Date : 08/01/2019


Matière : Algorithmique, série de travaux dirigés n° 3.2 PSFEP: Mr Boudries

Pour i allant de 1 à N2 faire //Remplissage du tableau T2 par l'utilisateur


Écrire (' Tableau T2: Veuillez saisir l'élément n° : ', i); Lire(T2[i]);
Fpour;

//Concaténation des deux tableaux T1 et T2 dans T3


N3N1+N2; //Nombre d'éléments de T3
Pour i allant de 1 à N1 faire //On affecte les éléments de T1 à la première partie de T3
T3[i] T1[i];
Fpour;
j1; //Pour parcourir T2 depuis le début
Pour i allant de N1+1 à N3 faire //On affecte les éléments de T2 à la deuxième partie de T3
T3[i] T2[j];
jj+1;
Fpour;
Fin.

Exercice 6:
Fibonacci dispose d’un couple de lapins capables de se reproduire à une vitesse phénoménale.
Le couple de lapins met deux mois pour grandir. A partir du troisième mois, le couple de lapins engendre une paire de
nouveaux lapins (qui mettront deux mois pour grandir et donc trois mois pour engendrer une nouvelle paire, etc.).
D’après cet exercice le nombre de couples de lapins Fn à chaque mois n obéit à la loi :
F1 =1 F2 =1
Fn =Fn−1 +F n−2
Écrire un algorithme permettant de construire le tableau des couples depuis le premier jusqu’au 20ème mois.

Algorithme Exo6;
Var i: entier;
F: tableau[1..20] d'entier;
Début
F[1]1; F[2]1; //1er et 2eme mois
Pour i allant de 3 à 20 faire //du 3eme au 20eme mois
F[i] F[i-1] +F[i-2]);
Fpour;
Fin.

Exercice 7:
Soit T un tableau de N nombres.
Trouver la sous-séquence dont la somme des éléments est maximale.

Remarques :
Une sous-séquence est une suite d'élément contigus (voisins, non éparpillés).
Le nombre d'éléments de la sous-séquence va de 1 élément au moins, à N éléments au plus.
Si tous les nombres sont négatifs ou nuls on considère que la sous-séquence de somme maximale est vide et la somme
maximale est 0.

Exemple :
T = [31, -41, 59, 26, -53, 58, 97, -93, -23, 84].
La sous-séquence de somme maximale est [59, 26, -53, 58, 97] et cette somme est égale à 187.

4
CFPA Mixte Younes Lekhel Bejaia

Section : T.S Informatique, option bases de données Date : 08/01/2019


Matière : Algorithmique, série de travaux dirigés n° 3.2 PSFEP: Mr Boudries

Algorithme Exo7;
Var i, j, N, seqmax, seqtemp, deb, fin: entier;
T: tableau[1..50] de entier;
neg: booléen;
Début
Répeter //Demander à l'utilisateur le nombre d'éléments du tableau
Écrire ('Saisissez un nombre d'éléments du tableau, compris entre 1 et 50' ); Lire(N);
Jusqu'à (N≥1) et (N≤50);

Pour i allant de 1 à N faire //Saisie des éléments, en fonction du nombre d'éléments N saisi précédemment
Écrire ('Veuillez saisir l'élément n°:', i); Lire(T[i]);
Fpour;

//Savoir si tous les éléments du tableau sont négatifs


negvrai; i1;
Tant que (i≤N) et (neg=vrai) faire
Si T[i]> 0 alors //Si on trouve un seul élément positif, donc tous les éléments ne sont pas négatifs
negfaux;
Fsi;
ii+1;
FTQ;

Si neg=vrai alors //Cas ou le tableau ne contient que des valeurs négatives ou nulles
Écrire (' Tous les nombres sont négatifs ou nuls, la sous-séquence maximale est 0 ');
Sinon
//Calcul de la sous-séquence maximale

//On suppose que la sous-séquence maximale est composée du premier élément du tableau
seqmax T[1]; deb1; fin1;

//On parcourt chaque sous-séquence du tableau, et on calcule sa somme dans Seqtemp


Pour i allant de 1 à N faire

seqtemp0; //Réinitialiser à 0 chaque nouvelle séquence

Pour j allant de i à N faire

seqtempseqtemp+T[j]; //Somme de chaque sous-séquence possible

Si seqtemp> seqmax alors //Si la sous-séquence actuelle est plus grande, on met à jour Seqmax
seqmax seqtemp;
debi;
finj;
Fsi;

Fpour;

Fpour;

Fsi;

Écrire (' La sous-séquence maximale est : ', seqmax);


Écrire (' Elle va de l'indice : ', deb, 'Jusqu'à l'indice', fin);

Fin.
5

Vous aimerez peut-être aussi