Décalage d'element dans une matrice en c

Fermé
ld09 Messages postés 9 Date d'inscription dimanche 22 mai 2016 Statut Membre Dernière intervention 31 janvier 2017 - 22 mai 2016 à 12:54
ld09 Messages postés 9 Date d'inscription dimanche 22 mai 2016 Statut Membre Dernière intervention 31 janvier 2017 - 22 mai 2016 à 19:05
Bonjour

j'ecris un programme en c ou je doit rentrer un nombre et a partir de la imprimer une matrice carré avec le nombre de lignes et de colonnes (par exemple si je rentre 2 je doit avoir une matrice 2x2) qui s'affiche de cette facon:
012
120
201
et j'ai un problème pour décaler les chiffres a chaque changement de ligne.
voici mon code:

int main() {
int i,j,k, num;
int mat[N][M]={0};

scanf("%d",&num);


for (i = 0; i <=num; ++i)
{
for (j=0; j<=num; ++j)
{
for(k=0;k<=num;k++){
if(j==k && i==0){
mat[i][j]=k;
}
if(i>0){
mat[i][j]=mat[0][j+1];
}
}
printf("%d",mat[i][j]);

}
printf("\n");

}

return 0;
}

je pense que le problème est au niveau if(i>0)

Merci d'avance!

3 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
22 mai 2016 à 14:35
Bonjour,
le nombre à placer dans la matrice est toujours la somme i+j modulo le nombre d'éléments
for ( i = 0 ; i <= num ; ++i )  { 
   for ( j = 0 ; j <= num ; ++j ) { 
      mat[i][j] = (i+j) % num;
   }
}
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 mai 2016 à 19:00
Plutôt % (num+1) dans son exemple.
0
ld09 Messages postés 9 Date d'inscription dimanche 22 mai 2016 Statut Membre Dernière intervention 31 janvier 2017
22 mai 2016 à 16:22
Bonjour,
Dans ce cas la ou j'utilise la formule
mat[i][j]=(i+j)%num

le resultat m'imprime
010
101
010
au lieu de
012
120
201
dans le cas ou num=2 par exemple
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 835
22 mai 2016 à 19:00
Bonjour,

Petite parenthèse :
Pour moi une matrice 2x2, ça ressemble plutôt à :
A B
C D
L'exemple que vous donnez est une matrice 3x3. Et dans ce cas, il faut enlever l'égalité stricte dans les conditions for.

Sinon, il faut utiliser le modulo.
Par exemple : (i+j) % (num+1).
Note : ça sera %num tout court si tu prends compte de ma remarque pour la dimension de la matrice.
0
ld09 Messages postés 9 Date d'inscription dimanche 22 mai 2016 Statut Membre Dernière intervention 31 janvier 2017
22 mai 2016 à 19:05
Bonjour j'ai essayer avec le %(num+1) et ca a effectivement marché.
Merci beaucoup!
0