> Tous les forums > Forum Autres langages
 symétrie d'un tableau 2D
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
qsdwxc
  Posté le 25/11/2011 @ 19:14 
Aller en bas de la page 
Petit astucien

Bonjour,

J'essaie depuis des heures d'obtenir une symétrie d'un tableau.

-J'ai un tableau tabR (de type 2D) qui contient des valeurs données.

-Je souhaite obtenir le tableau tabRsymétrie (de type 2D) à partir de tabR.

Voilà en image ce que je souhaite obtenir à partir de tabR

image_a symétrie ---> image_b.

J'ai essayé de faire une boucle qui lit le tableau tabR à l'envers et qui place les valeurs dans tabRsymetrie mais ça ne marche pas :

int jj=0,ii=0;
for(int i=tailleTableau-1; i>-1; i--)
{
for(int j=tailleTableau-1; j>-1; j--)
{

tabRsymetrie[ii][jj] = tabR[i][j];
jj++;

}
ii++;

}

quelqu'un peut-il m'aider.

Merci

Publicité
breizhbugs
 Posté le 25/11/2011 à 22:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonsoir,

Message original par qsdwxc int jj=0,ii=0;

for(int i=tailleTableau-1; i>-1; i--) // si ligne on parcours tout
for(int j=tailleTableau-1; j>-1; j--) // si colonne on considère plutot taille / 2 on ne parcourt que la moitié gauche que l'on échange avec sa moitié droite
{

tabRsymetrie[ii][jj] = tabR[i][j]; // pour échanger 2 valeur on passe par une valeur intermédiaire sinon on en écrase une. c'est 2 tableau different pas de souci
jj++; // non

}
ii++; // non plus

}

donc ca ressemble plutot à cela:

for (ligne = 0; ligne < taille; ligne++) // on parcourt bien toute les lignes

{

for (colonne=0; colonne < taille/ 2; colonne++) // on parcourt la première moitié

{

tabRsymetrie[i][taille-j]= tabR[i][j]; // on copie dans la partie droite du tableau resultat la partie gauche du tableau d'origine

tabRsymetrie[i][j]= tabR[i][taille-j]; // l'inverse

}// fin colonne

} // fin ligne

(J'ai pas testé par contre, mais l'idée est là...)



Modifié par breizhbugs le 25/11/2011 23:02
breizhbugs
 Posté le 25/11/2011 à 23:03 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

{#} Anonyme,

Exact, c'est corrigé! merci.

qsdwxc
 Posté le 25/11/2011 à 23:42 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

Merci pour ta réponse le problème c'est que que ton code ne fonctionne pas. J'ai compilé ce code avec en rouge ton code :

int main()
{
const int taille =4;
int tabR[taille][taille]={0,1,2,3}; // Initialisation du tableau de départ avec les valeurs 0, 1, 2, 3.
int tabRsymetrie[taille][taille]={0};

for (int i = 0; i < taille; i++) // on parcourt bien toute les lignes

{

for (int j=0; j < taille/ 2; j++) // on parcourt la première moitié

{

tabRsymetrie[i][taille-j]= tabR[i][j]; // on copie dans la partie droite du tabRleau resultat la partie gauche du tabRleau d'origine

tabRsymetrie[i][j]= tabR[i][taille-j]; // l'inverse

}// fin colonne

} // fin ligne


for(int i=0; i<2;i++){ //affiche le contenu du tableau tabRsymetrie
for(int j=0; j<2;j++){
cout <<" " <<tabRsymetrie[i][j] ;
}
}

Le tableau tabRsymetrie contient 0 3 0 0 au lieu de 3 2 1 0.

C'est un vrai casse tête. Je rame dessus depuis 2 jours.

Merci



Modifié par qsdwxc le 25/11/2011 23:46
breizhbugs
 Posté le 26/11/2011 à 00:15 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

[taille - 1 -j] alors pour les bornes, tu aurais pu corriger tout seul...

Sinon tu declare un tableau à 2 dimensions, mais tu l'initialises mal...

C'est un vrai casse tête. Je rame dessus depuis 2 jours.

Fait un simple schéma et tu verras que c'est simple...



Modifié par breizhbugs le 26/11/2011 00:18
qsdwxc
 Posté le 26/11/2011 à 12:27 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

@Anonyme et breizhbugs

Merci beaucoup vous m'avez bien avancé.

J'étais loin de la solution la plus propre en voulant parcourir le tableau tabR à l'envers et mettre les valeurs parcourues à l'envers dans le tableau tabRsymetrie...

Bref il faut que je révise ma manière de penser.

Merci

breizhbugs
 Posté le 26/11/2011 à 13:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien
Anonyme a écrit :

for (colonne=0; colonne < taille/ 2; colonne++) // on parcourt la première moitié

Non car, comme il n'y a pas de permutation des éléments dans un même tableau mais recopie

dans un second, il faut bien traiter toute une ligne !

non: on traite bien toute les lignes, c'est des colonnes dont on peut se disposer de boucler sur la totalité car la copie est symétrique, la deuxième moitié est faite par la deuxième affectation:

tabRsymetrie[i][taille-j]= tabR[i][j]; // on copie dans la partie droite du tabRleau resultat la partie gauche du tabRleau d'origine

tabRsymetrie[i][j]= tabR[i][taille-j]; // l'inverse

#include <stdio.h>


int main ( void )
{
const int taille = 4;
int tabR[taille][taille]={{255, 0, 0, 202}, {255, 255, 0, 191}, {0, 0, 0, 0}, {0, 1, 2, 3}};
int tabRsym[taille][taille];
int i, j;

printf("tableau symétrique:\n");
for (i = 0; i < taille; i++)
{
for (j=0; j < taille; j++)
printf("%4d ", tabR[i][j]);
printf("\n");
}

for (int i = 0; i < taille; i++) // on parcourt bien toute les lignes
{
for (int j=0; j < taille/ 2; j++) // on parcourt la première moitié
{
tabRsym[i][taille-1-j]= tabR[i][j]; // on copie dans la partie droite du tabRleau resultat la partie gauche du tabRleau d'origine
tabRsym[i][j]= tabR[i][taille-1-j]; // l'inverse
}// fin colonne
} // fin ligne

printf("tableau symétrique:\n");
for (i = 0; i < taille; i++)
{
for (j=0; j < taille; j++)
printf("%4d ", tabRsym[i][j]);
printf("\n");
}
}

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
GratuitJeu PC Kingdom Come : Deliverance gratuit
Valable jusqu'au 20 Février

Epic Game Store offre actuellement le jeu PC Farming Simulator 19. Devenez un fermier des temps modernes et développez les activités de votre ferme, moissonnez vos récoltes et prenez soin de votre élevage, le tout dans deux énormes environnements Américain et Européen. Pour télécharger Farming Simulator 19, connectez-vous sur votre compte Epic Game Store (créez-en un gratuitement si vous n'en n'avez pas) et cliquez sur le bouton Obtenir sur la fiche du jeu. Le jeu sera ajouté définitivement à votre bibliothèque et vous pourrez le télécharger ensuite quand vous voudrez. Le jeu est classé PEGI 3.


> Voir l'offre
15,99 €McAfee Total Protection 2020 (6 appareils, 1 an) à 15,99 €
Valable jusqu'au 20 Février

Amazon fait une promotion sur la suite antivirus McAfee Total Protection 2020 qui passe à 12,99 €. Cette protection intégrale alliant antivirus, protection de l'identité et protection de la confidentialité des données pour tous vos PC, Mac, smartphones et tablettes est valide pour 5 appareils pendant 1 an. La clé d'activation ainsi que le lien de téléchargement vous seront envoyés par email une fois la commande passée. Une bonne affaire.


> Voir l'offre
79,99 €Kit 5.1 Logitech Z607 bluetooth à 79,99 €
Valable jusqu'au 24 Février

Amazon fait une promotion sur le kit d'enceintes 5.1 Logitech Z607 qui passe à 79,99 € livré gratuitement alors qu'on le trouve ailleurs autour de 125 €. Ce kit dispose d'un caisson de basses, d'une voie centrale et de 4 satellites offrant au total  une puissance de crête de 160 Watts et 80 Watts en puissance RMS. De quoi profiter pleinement de vos films et de vos jeux dans une pièce moyenne. D'autant que des câbles extra-longs (6,2 m) sont fournis pour les satellites arrières. Grâce à ses entrées 3.5mm et RCA, vous pourrez relier le kit à un PC, à une console de jeux, un lecteur DVD/Blu-Ray tandis que sa connexion bluetooth vous permettra de l'utiliser pour vos appareils sans fil. Vous pouvez même lui brancher directement une carte mémoire ou une clé USB et écouter la radio FM. Une télécommande (sans fil) vous permettra de contrôler tout cela. Une excellente affaire !


> Voir l'offre

Sujets relatifs
Rafraichir un tableau en java
extraction de valeurs sur un tableau a deux entrees
Tableau dans java
fonction pointeur et, tableau dynamique
Fonction qui renvoie un tableau
logiciel de dessin acceptant un tableau de données
MasterMind : tableau de combinaison
Créer un tableau de structure
aide tableau
tableau dynamique
Plus de sujets relatifs à symétrie d''un tableau 2D
 > Tous les forums > Forum Autres langages