Tom's Guide > Forum > Programmation > (C++) rotation tableau 2D

(C++) rotation tableau 2D

Forum Programmation : (C++) rotation tableau 2D

TomsGuide.com : 800 000 inscrits répondent à toutes vos questions high-tech et informatique. Pour obtenir de l'aide, inscrivez-vous gratuitement !
Mot :    Pseudo :           
 

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é :

Code :
  1. #include <myconio.h>
  2. #include <iostream>
  3. #include <iomanip>
  4. using namespace std;
  5. #define NbColonnes 6
  6. #define NbLignes 4
  7. int main()
  8. { int l=0, c=0, mem=0;
  9.   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'} };
  10.   // -------------- tableau original
  11.   for(l=0;l<NbLignes;l++)
  12.   { for(c=0;c<NbColonnes;c++)
  13.     { cout << Tab[l][c] << ' ' ;
  14.     }
  15.     cout << endl;
  16.   }
  17.   cout << endl;
  18.   //--------------- tableau que je veux obtenir
  19.   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'} };
  20.   for(c=0;c<NbColonnes;c++)
  21.   { for(l=0;l<NbLignes;l++)
  22.     { cout << TabObtenu[c][l] << ' ' ;
  23.     }
  24.     cout << endl;
  25.   }
  26.   cout << endl;
  27.   // -------------- tableau après 'rotation a droite'
  28.   for(l=0;l<NbColonnes;l++)
  29.   { for(c=0;c<NbLignes;c++)
  30.     { Tab[NbLignes-(l+1)][c]=Tab[c][l];
  31.       cout << Tab[NbLignes-(l+1)][c] << ' ' ;
  32.     }
  33.     cout << endl;
  34.   }
  35.   getch();
  36.   return 0;
  37. }



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 :)


Message édité par mini_lulu le 12-04-2008 à 10:22:44
Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

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.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky

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 :)

Répondre à mini_lulu

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.

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > (C++) rotation tableau 2D
Aller à :

Il y a 2332 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Attention

Vous allez répondre sur un sujet resté inactif pendant plus de 6 mois.
Assurez-vous d'apporter des éléments nouveaux à la discussion avant de poursuivre.

Répondre Annuler
Liens