A voir également:
- Afficher une diagonale d' un tableau
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Comment faire un tableau - Guide
- Comment imprimer un tableau excel sur une seule page - Guide
- Trier un tableau excel - Guide
7 réponses
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
Modifié par Leviathan49 le 6/08/2010 à 08:50
Modifié par Leviathan49 le 6/08/2010 à 08:50
Sans faire aussi compliqué :
int n = 4; for(int i=0;i<n:i++) { for(int j=0;i<n:i++) { if((i+j)!=n-1) { int tmp = tab[i][j]; tab[i][j] = tab[j][i]; tab[j][i] = tmp; } } }
commentcamarcheeay
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
Modifié par commentcamarcheeay le 6/08/2010 à 10:56
Modifié par commentcamarcheeay le 6/08/2010 à 10:56
Bonjour,
Je voie que tu es entré dans une boucle complexe. Certes, comme ton tableau est en deux dimensions, tu vas avoir besoin de deux boucles imbriquées, mai le fait d'utiliser trop de paramètres n'est pas en ta faveur.
Avant de commencer à réfléchir programmation, il faut bien définir le problème. Le problème que tu cherches à résoudre est celui de trouver le miroir d'une transposée d'un miroir d'une matrice carrée.
exemple pour une matrice 2x2 :
On va considérer les notations suivantes :
tab est ta matrice, i est son indice de ligne et j son indice de colonne.
i : varie de 0 à n
j : varie de 0 à n
t(tab)[i][j] = transposée(tab)[i][j] = tab[j][i]
m(tab)[i][j] = miroir(tab)[i][j] = tab[i][n-j]
Donc, on va composer une fonction miroir o transposée o miroir
On a
Finalement, tu cherches un algorithme qui transforme tab[i][j] en tab[n-j][n-i]
Je mettrai le code dans le prochain message.
C. Taha
Je voie que tu es entré dans une boucle complexe. Certes, comme ton tableau est en deux dimensions, tu vas avoir besoin de deux boucles imbriquées, mai le fait d'utiliser trop de paramètres n'est pas en ta faveur.
Avant de commencer à réfléchir programmation, il faut bien définir le problème. Le problème que tu cherches à résoudre est celui de trouver le miroir d'une transposée d'un miroir d'une matrice carrée.
exemple pour une matrice 2x2 :
1a-1b m 1b-1a t 1b-2b m 2b-1b 2a-2b ---> 2b-2a ---> 1a-2a ---> 2a-1a
On va considérer les notations suivantes :
tab est ta matrice, i est son indice de ligne et j son indice de colonne.
i : varie de 0 à n
j : varie de 0 à n
t(tab)[i][j] = transposée(tab)[i][j] = tab[j][i]
m(tab)[i][j] = miroir(tab)[i][j] = tab[i][n-j]
Donc, on va composer une fonction miroir o transposée o miroir
On a
m(t(m(tab)))[i][j] = t(m(tab))[i][n-j] = m(tab)[n-j][i] = tab[n-j][n-i]
Finalement, tu cherches un algorithme qui transforme tab[i][j] en tab[n-j][n-i]
Je mettrai le code dans le prochain message.
C. Taha
commentcamarcheeay
Messages postés
667
Date d'inscription
mercredi 24 février 2010
Statut
Membre
Dernière intervention
30 mars 2020
86
Modifié par commentcamarcheeay le 6/08/2010 à 10:57
Modifié par commentcamarcheeay le 6/08/2010 à 10:57
Voici le code comme promis :
C. Taha
int n = length(tab)-1; if(n != length(tab[0])-1){system.out.print("message d'erreur")} for(int i=0 ; i<n ; i++) { for(int j=0 ; j<n-i ; j++) { int tmp = tab[i][j]; tab[i][j] = tab[n-j][n-i]; tab[n-j][n-i] = tmp; } }
C. Taha
merci à vous pour vos réponses, seulement, ça marche pas, pour le code de Leviathan49 ça va pas, et pour le commentcamarcheeay, j'ai l'impréssion que c'est du bon, sauf k'il n'affiche pas tout.
voici ce k j'ai donc fait avec le code de commentcamarcheeay
int n = tab.length-1;
if(n != tab[0].length-1){System.out.print("message d'erreur");}
for(int i=0;i<n;i++)
{ //int ;
for(int j=0;j<n-i;j++)
{// int test2=tab.length-j;
int tmp = tab[i][j];
tab[i][j] = tab[n-j][n-i];
tab[n-j][n-i] = tmp;
System.out.print("\t"+tab[i][j]);
}System.out.println("");
}
}
et qu'il medonne c'est :
5 15 4
116 104
7
voici ce k j'ai donc fait avec le code de commentcamarcheeay
int n = tab.length-1;
if(n != tab[0].length-1){System.out.print("message d'erreur");}
for(int i=0;i<n;i++)
{ //int ;
for(int j=0;j<n-i;j++)
{// int test2=tab.length-j;
int tmp = tab[i][j];
tab[i][j] = tab[n-j][n-i];
tab[n-j][n-i] = tmp;
System.out.print("\t"+tab[i][j]);
}System.out.println("");
}
}
et qu'il medonne c'est :
5 15 4
116 104
7
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Leviathan49
Messages postés
257
Date d'inscription
jeudi 10 juin 2010
Statut
Membre
Dernière intervention
22 juillet 2011
70
6 août 2010 à 14:00
6 août 2010 à 14:00
int n = tab.length-1; if(n != tab[0].length-1){System.out.print("message d'erreur");} for(int i=0;i<n;i++) { //int ; for(int j=0;j<n-i;j++) {// int test2=tab.length-j; int tmp = tab[i][j]; tab[i][j] = tab[n-j][n-i]; tab[n-j][n-i] = tmp; } } for(int i=0 ; i<n ; i++) { for(int j=0 ; j<n ; j++) { System.out.print(tab[i][j]+"\t"); } System.out.print("\n"); }Non, non le code de commentcamarcheeay marche c'est juste que tu lui demande d'afficher que la moitié du tableau ^^
Excusez-moi, je me suis trompé, pour lire il faut créer une nouvelle boucle.
Merci beaucoup, commentcamarcheeay et à tous ceux qui ont tenté à me dépanner.
Merci encore, à+++++++++++
vive comment ça marche
Merci beaucoup, commentcamarcheeay et à tous ceux qui ont tenté à me dépanner.
Merci encore, à+++++++++++
vive comment ça marche
je connais pas trop grande chose en programmation voici le programme lecompilateur ne veut pas executer pour moi quelqu'un peut m'aider s'il vous plait.
#include <conio.h>
#include<iostream.h>
class produit{
float prixtotal ;
int qte;
char nom[10];
public:
void afficher();
produit(float x,int quantite,char *w){
prixtotal=x;
qte=quantite;
nom=w;}
};
void main(){
clrscr();
produit p;
char c;
intx a;
float z;
cin>>c>>a>>z;
void produit::afficher();
{cout<<nom;
cout<<qte;
cout<<nom;}
#include <conio.h>
#include<iostream.h>
class produit{
float prixtotal ;
int qte;
char nom[10];
public:
void afficher();
produit(float x,int quantite,char *w){
prixtotal=x;
qte=quantite;
nom=w;}
};
void main(){
clrscr();
produit p;
char c;
intx a;
float z;
cin>>c>>a>>z;
void produit::afficher();
{cout<<nom;
cout<<qte;
cout<<nom;}
Modifié par commentcamarcheeay le 6/08/2010 à 09:11
Le code que tu as donné est celui de la transposée d'une matrice, ce n'est pas ce qui a été demandé.
Mais le principe est bon!