Se connecter / S'enregistrer
Votre question

(C++) rotation tableau 2D

Tags :
  • Programmation
Dernière réponse : dans Programmation
12 Avril 2008 10:21:48

Bonjour tout le monde,

Je suis un peu "novice" en C++, en fait je cherche à faire une rotation d'un tableau à deux dimensions.

Je teste, je teste mais je n'y arrive point, donc je fais appel à vous ^^

Mon problème un peu simplifié :

  1. #include <myconio.h>
  2. #include <iostream>
  3. #include <iomanip>
  4. using namespace std;
  5. #define NbColonnes 6
  6. #define NbLignes 4
  7.  
  8. int main()
  9. { int l=0, c=0, mem=0;
  10. char Tab[NbLignes][NbColonnes]={ {'V','B','R','T','U','I'}, {'P','P','V','O','U','M'}, {'C','F','R','V','H','R'}, {'Q','A','Z','X','Q','T'} };
  11. // -------------- tableau original
  12. for(l=0;l<NbLignes;l++)
  13. { for(c=0;c<NbColonnes;c++)
  14. { cout << Tab[l][c] << ' ' ;
  15. }
  16. cout << endl;
  17. }
  18. cout << endl;
  19. //--------------- tableau que je veux obtenir
  20. char TabObtenu[NbColonnes][NbLignes]={ {'Q','C','P','U'}, {'A','F','P','B'}, {'Z','R','V','R'}, {'X','V','O','T'}, {'Q','H','U','U'}, {'T','R','M','I'} };
  21. for(c=0;c<NbColonnes;c++)
  22. { for(l=0;l<NbLignes;l++)
  23. { cout << TabObtenu[c][l] << ' ' ;
  24. }
  25. cout << endl;
  26. }
  27. cout << endl;
  28. // -------------- tableau après 'rotation a droite'
  29. for(l=0;l<NbColonnes;l++)
  30. { for(c=0;c<NbLignes;c++)
  31. { Tab[NbLignes-(l+1)][c]=Tab[c][l];
  32. cout << Tab[NbLignes-(l+1)][c] << ' ' ;
  33. }
  34. cout << endl;
  35. }
  36.  
  37. getch();
  38. return 0;
  39. }


En fait c'est la partie " tableau après 'rotation a droite' " le problème. Je veux remplacer le tableau initial en fait. Peu importe si je créer un tableau intermédiaire, mais je veux traiter le tableau "Tab". Je crois que c'est possible enfin, juste par le biais d'un échange de valeurs ?!

Auriez vous un petit coup de pouce ou une piste ?

Merci beaucoup d'avance :) 

Autres pages sur : rotation tableau

a b L Programmation
13 Avril 2008 17:29:23

Tu ne peux pas remplacer les valeurs de la matrice initiale puisque la largeur devient la longueur et inversement. La taille de ton tableau change, même si au total, elle est la même. Ce n'est possible que sur des matrices carrée, sur une rotation Pi/2 en passant par une seule valeur intermédiaire.
14 Avril 2008 14:37:03

Merci de ta réponse, je n'ai pas trouvé de solution, je vais essayer de contourner la chose et si je trouve quelque chose je vous en ferais part ^^

merci encore :) 
a b L Programmation
14 Avril 2008 20:36:11

La seule chose que tu peux faire c'est de voir le tableau à l'envers, c'est-à-dire en disant que l'indice de ligne est en fait l'indice de colonne, et inversement.
Du coup, il suffirait d'inverser les lignes.
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS