Ecrire la procédure TriInsertion () de signature
[Algo]
procedure TriInsertion (TabInt : in_out tableau de entier);
[/Algo]
Ce sous-programme doit trié le tableau TabInt selon la méthode du tri par insertion.
Ecrire la procédure TriInsertion () de signature
[Algo]
procedure TriInsertion (TabInt : in_out tableau de entier);
[/Algo]
Ce sous-programme doit trié le tableau TabInt selon la méthode du tri par insertion.
[Algo]
procedure TriInsertion (TabInt : in_out tableau_de entier)
debut
pour (i variant_de 1 a taille(TabInt) – 1)
faire
declarer x : entier;
x <- TabInt [i];
declarer j : entier_naturel;
j <- i;
tant_que ((j > 0) ET_ALORS (TabInt[j – 1] > x))
faire
TabInt[j] <- TabInt[j – 1];
j <- j – 1;
ffaire
TabInt[j] <- x;
ffaire
fin
[/Algo]
Ecrire la procédure TriBulles () de signature
[Algo]
procedure TriBulles (TabInt : in_out tableau de entier);
[/Algo]
Ce sous-programme doit trié le tableau TabInt selon la méthode du tri à bulles.
[Algo]
procedure TriBulles (TabInt : in_out tableau_de entier)
debut
pour (i variant_de taille(TabInt) – 1 a 1 descendant)
faire
pour (j variant_de 0 a i – 1)
faire
si (TabInt[j+1] < TabInt[j])
PermuterEntier (TabInt[j+1], TabInt[j]);
fsi
ffaire
ffaire
fin
[/Algo]
Mettre de la couleur dans le terminal sous GNU / Linux
Puisque les cours d’IHM (Interface Homme Machine) ne commencent qu’au second semestre, nous allons voir comment nous pouvons spécifier, dans un programme, la couleur des caractères ainsi que celle du fond d’une console, mais aussi effacer son contenu.
Puisque la console est une émulation d’un terminal VT100, toutes les instructions que nous allons lui donner commencent par \033[. Ensuite, une autre séquence d’instruction, concaténée à la première, provoque l’effacement de l’écran, le changement de la couleur de la police ou du fond.
Remarque : les informations évoquées dans cette partie fonctionnent aussi sous Mac OS-X, mais pas sous Windows.
Effacer l’écran
Afin d’effacer l’écran, la seconde séquence est : H\033[2J. En conséquence, la fonction suivante permet d’effacer l’écran :
void clearScreen () {
cout << "\033[H\033[2J";
}
Copiez la.
Changer la couleur
Afin de changer la couleur, la seconde séquence est : XXm, où m est le code de la couleur souhaitée. Ce code est constitué de 2 chiffres comme le montre le tableau suivant :
| Couleur | Code associé |
| 0 | réinitialise le système de couleur à la valeur par défaut du shell |
| 30 | Noir |
| 31 | Rouge |
| 32 | Vert |
| 33 | Jaune |
| 34 | Bleu |
| 35 | Magenta |
| 36 | Cyan |
Copiez le code suivant :
const unsigned KReset (0);
const unsigned KNoir (30);
const unsigned KRouge (31);
const unsigned KVert (32);
const unsigned KJaune (33);
const unsigned KBleu (34);
const unsigned KMAgenta (35);
const unsigned KCyan (36);
void couleur (const unsigned & coul) {
cout << "\033[" << coul <<"m";
}
Le code suivant :
couleur (KRouge); cout << "Rouge" << endl; couleur (KVert); cout << "Vert" << endl; couleur (KReset); cout << "Retour à la normale" << endl;
provoquera l’affichage :
Rouge
Vert
Retour à la normale
Changer le fond
Pour changer le fond, c’est exactement la même séquence d’instructions que pour changer la couleur. La seule différence provient du fait que les couleurs associées voient leur code respectif augmenté de 10.
Pour des informations complémentaires quant à la gestion du terminal (sous GNU / Linux), vous pouvez visiter cette page.
Le but du projet est de réaliser une version simplifiée du célèbre jeu “Candy Crush” (pour plus d’informations voir ici).
Les règles du jeu sont les suivantes :
KMaxTimes coups pour réaliser le meilleur score;La grille est représentée par une matrice de taille NxN.
En conséquence, nous pouvons définir les alias suivants :
typedef vector <unsigned> line; // un type représentant une ligne de la grille
typedef vector <line> mat; // un type représentant la grille
struct maPosition {
unsigned abs;
unsigned ord
}; // une position dans la girlle
Ecrire la fonction initGrid () de profil :
void initGrid (mat & grid, const size_t & matSize)
Cette fonction a pour but d’initialiser toutes les cases de la grille des nombres tirés au hasard entre 1 et une constante KNbCandies à définir.
Travail à effectuer : écrivez le corps de la fonction displayGrid () de profil :
void displayGrid (const mat & grid)
Cette fonction doit :
clearScreen ();KNbCandies, on affiche une case vide, sinon, on affiche le nombre courant.Ecrire la fonction makeAMove () de profil :
void makeAMove (mat & grid, const maPosition & pos, const char & direction)
Cette fonction permute, dans la grille, le nombre situé initialement à la position pos (aux coordonnées pos.abs, pos.ord)
avec la case de destination selon
la valeur du caractère direction.
Ecrire le corps de la fonction atLeastThreeInAColumn () de profil :
bool atLeastThreeInAColumn (const mat & grid, maPosition & pos, unsigned & howMany);
Cette fonction parcourt la grille afin de trouver une suite d’au moins 3 nombres identiques sur la même colonne. Elle renvoie vrai si une telle suite a été trouvée, faux sinon.
Si elle a renvoyée vrai, on a une suite de howMany tous égaux à partir des coordonnées pos.
Ecrire le corps de la fonction atLeastThreeInARow () de profil :
bool atLeastThreeInARow (const mat & grid, maPosition & pos, unsigned & howMany);
Cette fonction parcours la grille afin de trouver une suite d’au moins 3 nombre identiques sur la même ligne. Elle renvoie vrai si une telle suite a été trouvée, faux sinon.
Si elle a renvoyée vrai, on a une suite de howMany tous égaux à partir des coordonnées pos.
Ecrire le corps de la fonction removalInColumn () de profil :
void removalInColumn (mat & grid, const maPosition & pos, unsigned howMany);
Cette fonction supprime les howMany nombres identiques de la colonne pos.abs à partir de la ligne pos.ord, remonte ceux qui sont en dessous et complète la ligne avec la constante KImpossible.
Ecrire le corps de la fonction removalInRow () de profil :
void removalInRow (mat & grid, const maPosition & pos, unsigned howMany);
Cette fonction supprime les howMany nombres identiques de la ligne pos.ord à partir de la colonne pos.abs, remonte ceux qui sont en dessous et complète la ligne avec la constante KImpossible. Pour écrire cette fonction, on doit s’appuyer sur la fonction removalInColumn ().
Le but de cette partie est d’écrire la fonction main () .
Cette fonction :