stan4950
Messages postés10Date d'inscriptionvendredi 15 novembre 2013StatutMembreDernière intervention26 novembre 2013
-
25 nov. 2013 à 22:03
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023
-
26 nov. 2013 à 12:39
Bonsoir a tous !!
J'ai besoin de votre précieuse aide ! J'ai un tableau aléatoire de 4 lignes par 4 colonnes générant des chiffres. Le problème est que je dois (dans le cadre de mon projet info qui est de créer un jeu) demander a l'utilisateur d'échanger 2 cases du tableau qu'il choisira pour aligner 3 chiffres ou plus. J"ai donc mon tableau avec les titres (de 0 à 8 en abscisse et en ordonnées pour que l'utilisateur se repère).
J'ai pensé a la fonction swap mais je ne sais pas comment la construire. J'ai cependant fais un petit récap des taches que je dois faire :
- Demander à l'utilisateur d'entrer une ligne et une colonne
- Puis une deuxième fois
- De faire entre temps un scanf pour assimiler les coordonnées à la valeur sur le tableau
-d'échanger les valeurs
-d'actualiser la grille(tableau) avec les deux valeurs échangées
2 1 2 2
2 1 1 2
1 2 2 1
1 1 2 2
Par exemple je dois demander à l'utilisateur quelle ligne et colonne,il me dira :
0 1 (ligne 0 colonne 1)
Puis je lui demanderait une deuxième fois
0 0 (ligne 0 colonne 0)
Du coup il aura trois fois la meme case alignée sur la première ligne.
Pouvez vous m'aider ? (au fait je suis débutant et je suis habitué a travailler avec printf, et pas cout...)
nagaD.scar
Messages postés4272Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention 4 janvier 202317 26 nov. 2013 à 08:34
salut ,
Pour commencer, cout est bien plus simple à utiliser que printf : il n'y a pas de type à renseigner et dans 90% des cas tu n'a aucuns cast à faire. C'est à dire que pour afficher en entier, avec printf =>
printf("%d",&entier);
alors qu'avec cout :
cout << entier;
.
Bref.
Sinon je ne comprend pas le problème qui se pose à toi, je pense que tu dois savoir comment échanger 2 valeurs d'un tableau? Enfin je ne vois pas ou tu bloque quoi ^^
stan4950
Messages postés10Date d'inscriptionvendredi 15 novembre 2013StatutMembreDernière intervention26 novembre 2013 26 nov. 2013 à 10:01
En fait je n arrive pas a retranscrire que les coordonnes que l utilisateur va taper represente une valeur du tableau. Il va ecrire une ligne et une colonne mais sa ne represente qu une valeur dans mon tableau(il faut que je fasse l analogie entre coordonnees et valeur)
nagaD.scar
Messages postés4272Date d'inscriptionsamedi 8 septembre 2007StatutMembreDernière intervention 4 janvier 202317 26 nov. 2013 à 11:30
bah en fait, du fait que tu ais un tableau en 2 dimensions, coordonnées représente la case du tableau. C'est à dire que si l'utilisateur indique 2 comme colonne et 0 comme ligne, la valeur à lire sera de coordonnées 2,0 soit :
tableau[2][0];
donc il n'y a pas de "piège"
si l'utilisateur veut permuter 2 valeurs, on pourra avoir :
public int ** permute(int ** itTableau , int X_1 , int Y_1, int X_2, int Y_2) { int iCpy = itTableau [X_1][Y_1]; itTableau [X_1][Y_1] = itTableau [X_2][Y_2]; itTableau [X_2][Y_2] = iCpy;
Le fait que tu ais crée plusieurs sujets au lieu de rester sur celui d'origine, casse le contexte. Les réponses sont donc techniquement justes, mais contextuellement inadaptées.
Comme déjà dit, la meilleure solution est de modifier la classe Array2D qui facilite et masque les opérations que tu ferais sur un tableau. De plus, seul un tableau à une seule dimension est nécessaire pour représenter une grille (via la formule x + y * width).
Enfin, un échange propre en C++, se fait via std::swap.
Array2D tab(4, 9);
std::swap(tab(2, 4), tab(3, 4)); // échange les deux positions.