2017-06-20 1 views
-2

Je dois afficher en zigzag une matrice. comme ça: la taille de la matrice: 3 3Programme pour afficher la matrice zigzag

00 01 02 
10 11 12 
20 21 22 
30 31 32 

affichage: 00 01 02 12 11 10 20 21[...]

Voici mon code, mais il affiche des nombres aléatoires au milieu:

int lines, columns; 
cin>> lines >>columns; 
int matriz[lines][columns]; 

for (int i = 0; i < lines; ++i){ 
    for (int j = 0; j < columns; ++j){ 
     cin >> matrix[i][j]; 
    } 
} 
int j=0; 
for (int i = 0; i < lines; ++i){ 
    if (i%2==0){ 
     while(j<columns){ 
      cout<<matrix[i][j]<<' '; 
      j++; 
     } 
    }else{ 
     while(j>=0){ 
      cout<<matrix[i][j]<<' '; 
      j--; 
     } 

    } 
} 
return 0; 
+0

Vous avez probablement dépassé les limites de 'j'. Vérifiez que – yizzlez

+0

Bienvenue dans Stack Overflow. Veuillez prendre le temps de lire [The Tour] (http://stackoverflow.com/tour) et de consulter le contenu du [Centre d'aide] (http://stackoverflow.com/help/asking) quoi et comment vous pouvez demandez ici. –

+0

Le bon outil pour résoudre ces problèmes est votre débogueur. Vous devez parcourir votre code ligne par ligne * avant * de demander Stack Overflow. Pour plus d'aide, veuillez lire [Comment déboguer de petits programmes (par Eric Lippert)] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/). Au minimum, vous devriez [modifier] votre question pour inclure un exemple [Minimal, complet et vérifiable] (http://stackoverflow.com/help/mcve) qui reproduit votre problème, ainsi que les observations que vous avez faites dans le débogueur. . –

Répondre

0

Sur le cas else , j est égal à columns au début de la boucle while (donc à la ligne suivante, matrix[i][j] sera hors limites, car j devrait être strictement inférieur à columns). Une solution simple serait de changer while(j>=0) en while(j>0) et de déplacer j-- avant cout. Mais, comme d'autres le disent, vous devriez apprendre à utiliser le débogueur, il est très facile d'attraper de telles erreurs avec lui.

+0

Bit plus rapide que moi. Je vais laisser tomber ma démo/preuve ici: http://ideone.com/vOR0ie – user4581301

+0

Hey pour utiliser la surbrillance, utilisez le caractère à côté du numéro 1, qui est le 'et pas la simple citation '. J'espère que cela t'aides –