Wie gebe ich dieses Array richtig aus?



  • Mein Code:

    *Anmerkung:
    i und j sind integer Laufvariablen, "zeilen" und "spalten" sind double Werte, deren Größe zu Beginn von Benutzer festgelegt wird. matrix1 [][] ist ebenfalls von Typ "double".

    for (i = 1; i <= zeilen; i++) {
    		for (j = 1; j <= spalten; j++) {
    
    			printf("Zeile/Spalte (%d, %d) = ", i, j);
    			scanf_s("%lf", &matrix1[i][j]);
    
    		}
    	}
    
    	printf("\nIhre Matrix: \n\n");
    
    	for (i = 1; i <= zeilen; i++) {
    		for (j = 1; j <= spalten; j++) {
    
    			printf("%lf \n", matrix1[i][j]);
    
    		}
    	}
    

    Wie schaffe ich es, dass die Matrix in der richtigen Reihenfolge ausgegeben wird?

    Im Moment sieht das ganze so aus:

    x | x | x| x| usw.

    Aussehen soll es aber, je nach Matrix z.B so:

    2x3

    x | x | x
    x | x | x



  • CoalJack schrieb:

    Im Moment sieht das ganze so aus:

    x | x | x| x| usw.

    Sicher?

    printf("%lf \n", matrix1[i][j]);
    

    sieht mir so aus, als ob vor jeder Zahl eine neue Zeile begonnen wird?!
    Edit: Genau genommen: nach jeder Zahl!



  • Die Indices von 1 bis einschließlich zeilen , bzw. spalten laufen zu lassen ist wahrscheinlich falsch. In C beginnt die Indizierung bei 0.

    zeilen und spalten als double ist wohl auch nicht richtig. Oder hast Du mal 1,5 Spalten o.ä.?

    Deine eigentliche Frage zielt nur darauf, wo Du einen Zeilenumbruch ausgeben musst, damit da ein schönes Rechteck entsteht?
    Am Ende jeder Zeile halt. 😕



  • sieht mir so aus, als ob vor jeder Zahl eine neue Zeile begonnen wird?!
    Edit: Genau genommen: nach jeder Zahl!

    Ja, du hast recht. Sie werden untereinander ausgegeben.

    Die Indices von 1 bis einschließlich zeilen, bzw. spalten laufen zu lassen ist wahrscheinlich falsch. In C beginnt die Indizierung bei 0.

    zeilen und spalten als double ist wohl auch nicht richtig. Oder hast Du mal 1,5 Spalten o.ä.?

    War blöd von mir. Bin schon länger wach und nicht mehr ganz klar. Hab die Spalten und Zeilen natürlich als Integer erstellt.

    Habe den Code angepasst:

    for (i = 0; i < zeilen; i++) {
    		for (j = 0; j < spalten; j++) {
    
    			printf("Zeile/Spalte (%d, %d) = ", i, j);
    			scanf_s("%lf", &matrix1[i][j]);
    
    		}
    	}
    
    	printf("\nIhre Matrix: \n\n");
    
    	for (i = 0; i < zeilen; i++) {
    		for (j = 0; j < spalten; j++) {
    
    			printf("%lf | %lf \n", matrix1[i][0], matrix1[0][j]);
    
    		}
    	}
    

    Deine eigentliche Frage zielt nur darauf, wo Du einen Zeilenumbruch ausgeben musst, damit da ein schönes Rechteck entsteht?
    Am Ende jeder Zeile halt. 😕

    Genau das bekomme ich nicht hin. Mir wird immer die falsche Reihenfolge ausgegeben.

    X 0 1 2. .
    0
    1
    2
    .
    .

    z.B wenn ich nun eingebe:

    printf("%lf | %lf \n", matrix1[i][0], matrix1[0][j]);
    

    Werden mir 8 Werte ausgegeben, obwohl ich eine 2x2 Matrix wollte 😃
    Ich weiß auch WARUM, aber ich bekomme den Denkfehler nicht weg...



  • for (i = 0; i < zeilen; i++) {
            for (j = 0; j < spalten; j++) {
    
                printf("%lf |", matrix1[i][j]);  /* Das soll alles in einer Zeile stehen, daher kommt hier kein \n hin */
    
            }
    /* hier ist die Zeile fertig, also sollte hier auch der Zeilenvorschub stehen. */
             putchar('\n');  /* oder puts(""); oder printf("\n"); */
    
        }
    


  • Danke vielmals DirkB!

    Danach habe ich gesucht 👍

    Edit: Ich glaube Furble Wurble hatte mir auch schon die richtige Antwort gegeben. Ich habe sie nur nicht richtig verstanden. Müdigkeit halt... 🙂


Anmelden zum Antworten