(C++) rotation tableau 2D - Programmation
Dans la même thématique :
Ceci répond-il à votre question ? Oui | Non
 

Ajouter une réponse



 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet : (C++) rotation tableau 2D
 
Profil : IDNaute
Plus d'informations

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

Profil : IDNaute
Plus d'informations

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.


---------------
B800A0 8EC0 B400 B013 CD10 B91000 BA1000 B005
E81000 B407 CD21 B400 B003 CD10 B44C B000 CD21
50 89D0 BB4001 F7E3 89C7 01CF 58 26 8805 C3
Profil : IDNaute
Plus d'informations

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

Profil : IDNaute
Plus d'informations

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.


---------------
B800A0 8EC0 B400 B013 CD10 B91000 BA1000 B005
E81000 B407 CD21 B400 B003 CD10 B44C B000 CD21
50 89D0 BB4001 F7E3 89C7 01CF 58 26 8805 C3

Aller à :
Ajouter une réponse
  FORUM Infos-du-Net » Programmation » (C++) rotation tableau 2D
 

Liens