Hello !
J'ai un exercice à réaliser en cours de c++, qui est de réaliser un jeu du taquin.
Alors voilà l’énoncé :
" L'objectif de ce TP est de construire un programme permettant de mener une partie
de taquin. La configuration d'un jeu de taquin est ainsi caractérisée par :
-
une grille de 3 x 3 cases, constituée d'éléments entiers qui sera
représentée par un tableau à deux dimensions.
Question 1
Ecrire la définition du taquin correspondant à un tableau à 2
dimensions de taille 3 x 3 à éléments entiers. La case libre sera représentée par un
9.
Question 2
Ecrire la fonction
initialisation
qui met le jeu de taquin dans une
configuration initiale aléatoire. La case libre se trouve en (p, p), en bas à droite. La
valeur de p étant ici 3. Les cases sont mélangées. Pour cela, vous utiliserez
l'algorithme suivant :
-
initialiser la grille dans la configuration gagnante ;
-
tirer au sort un entier n entre 1 et p² et échanger la 1
ère
case avec la n
ième
case. Recommencer avec la 2
ème
case, en tirant un entier compris entre 1
et p² et ainsi de suite jusqu'à avoir traité toutes les cases.
Question 3
Ecrire une fonction
affichage
qui affiche la grille du taquin, avec un
espace pour la case libre. "
Je bloque à la question 2, je sais que pour initialiser la grille en config gagnante c'est la grille de base que je créer à la question 1.
Mon problème étant le fait tirer au sort un entier et de permuter cette case avec la première, etc..
Voici le peu de code que j'ai fais :
" #include <iostream>
using namespace std;
const int nbcol = 3;
const int nblig = 3;
using taquin = array<array<int, nbcol>, nblig>;
void initialisation (taquin &t)
{
int nb = rand()% 2+0;
int a=1;
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
t[i][j]=a;
cout << t[i][j];
a++;
}
cout << endl;
}
}
int main()
{
srand(time(NULL));
taquin tab;
initialisation(tab);
return 0;
}
"
les balises code ça n'a pas été ajouté à jvc pour décorer
Excuse moi, je ne savais pas l'existence des balises code.
#include <iostream>
#include <array>
#include <ctime>
#include <cstdlib>
using namespace std;
const int nbcol = 3;
const int nblig = 3;
using taquin = array<array<int, nbcol>, nblig>;
void initialisation (taquin &t)
{
int nb = rand()% 2+0;
int a=1;
for (int i=0; i<3; i++)
{
for (int j=0; j<3; j++)
{
t[i][j]=a;
cout << t[i][j];
a++;
}
cout << endl;
}
}
int main()
{
srand(time(NULL));
taquin tab;
initialisation(tab);
return 0;
}
utilise une variable temporaire pour echanger deux valeurstemp = echange1;
echange1=echange2;
echange2=temp;
Ok je vais essayer comme ça merci !