2017-02-11 5 views
-1

Ich fange gerade an, in 2D-Arrays einzutauchen, und ich habe einige Probleme, warum meine Ausgabe eine Datenzeile statt der dimensionalen Matrix erzeugt. Alle Hilfe wird geschätzt! Vielen Dank!!Eingabe und Drucken eines 2D-Arrays

Mein Code:

#include <stdio.h> 
#include <stdlib.h> 

int main() { 

int x, y, i, j; 
int m[10][10]; 


setvbuf(stdout, NULL, _IONBF, 0); 

while (1) { 
    printf("Number of rows? "); 
    scanf("%d", &x); 
    if (x == 0) 
     break; 
    printf("Number of columns? "); 
    scanf("%d", &y); 

    printf("Enter matrix values row by row: \n"); 
    for (i = 0; i < x; i++) { 
     for (j = 0; j < y; j++) { 
      scanf("%d", &(m[i][j])); 
     } 
    } 
printf("Matrix read:\n"); 
    for (i = 0; i < x; i++) { 
     for (j = 0; j < y; j++) { 
      printf("%d", m[i][j]); 
     } 
    } 

Kalkulatorische Daten:

Number of rows? 2 
Number of columns? 2 
Enter matrix values row by row: 
1 2 3 4 

Ausgang:

Matrix read: 
1234 

Antwort

1

Um herauszufinden, warum Ihr aktuelles Programm den Zeilendruck, die Druckschleife durchlaufen und sehen Sie sich alle Punkte an, an denen Sie die Werte drucken.

Sie werden feststellen, dass es so etwas wie das sein wird:

print "1", print "2" print "3", print "4".

Also, das Programm tut das einfach. Es druckt die Zahlen ohne irgendeine andere "Formatierung" herum.

Sie können etwas tun:

printf("Matrix read:\n"); 
for (i = 0; i < x; i++) { 
    for (j = 0; j < y; j++) { 
     printf("%d ", m[i][j]); 
    } 
    printf("\n"); 
} 

Hinweis gibt es einen Raum, nachdem die Zahl im wörtlichen „% d“. Und dann, beachten Sie, dass eine neue Zeile nach jedem inneren for loop gedruckt wird (was einer Zeile entspricht).

Hinweis: Sie können aussagekräftigere Namen verwenden. ZB: row anstelle von x und column anstelle von y.

+0

Vielen Dank! Es hat wirklich geholfen – cat

0

Ihr Programm ist völlig in Ordnung. Es druckt die Matrix auch in der richtigen Reihenfolge. Wenn Sie die Ausgabe jedoch nur in einem Matrixformat formatieren möchten, drucken Sie einfach "\ t" und "\ n" nach der inneren bzw. äußeren Schleife.

for (i = 0; i < x; i++) { 
    for (j = 0; j < y; j++) { 
     printf("%d\t", m[i][j]); 
    } 
    printf("\n"); 
}