Matrix Programm



  • Hallo ich komme bei einem Programm nicht weiter, wo ich eine (4/4) Matrix erstelle und mithilfe von scanf diese dann aufrufen möchte, wäre dankbar wenn mir einer den Fehler sagen würde.
    Habe mir die Musterlösung angeguckt, aber da scheint auch iwo ein Hacken zu sein.
    Danke im Voraus. Ich verwernde aktuell Codeblocks.
    Bei der Zeile };22,23,24,25) sieht merkwürdig aus, aber da habe ich alle Variationen ausprobiert.

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

    int main()
    {
    int i;
    int j;
    int matrix [4][4]=

    {
    (10,11,12,13),
    (14,15,16,17),
    (18,19,20,21),
    };22,23,24,25)

    for(i=0;i<4;i++)

    (

    printf("Reihe angeben %d angeben", i+1);
    for(j=0;j<4;j++)
    {
    scanf("%d",&matrix[i][j]));
    }

    return 0;
    }
    }



  • Dann probier mal die Variante mit }; am Ende der Zeile.

    Die restliche Klammerung musst du auch überprüfen.



  • klappt auch nicht



  • Wenn du vernünftig einrücken würdest (die {} Blöcke), würdest du von ganz allein den Fehler bemerken.
    "return 0;" ist falsch positioniert, die Array-Initialisierung verlangt {} statt deines ().



  • Hey auch,

    als erstes empfehle ich dir hier deinen Code besser zu posten über die Funktion "C" die du beim Antwortschreiben auswählen kannst. Sieht dann ca. so aus [ code="c"]"hier steht dein Code"[ /code ].

    Weiter habe ich dir ein paar Bemerkungen in den Code gepackt. Damit solltest du das meiste selbst finden.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    	int i;
    	int j;
    	int matrix[4][4] =		// Momentan: int matrix[][] = { (), (), (),} ;)
    							// Da solltest nchmal nachschauen!
    	{						// Soll: matrix[][] = { (), (), (), () };
    		(10, 11, 12, 13),	//
    		(14, 15, 16, 17),	//
    		(18, 19, 20, 21),	//
    	}; 22, 23, 24, 25)		// Hier meckert ja schon die Autoanalyse
    
    	for (i = 0; i<4; i++)
    
    		(				// Vielleicht hier?
    
    		printf("Reihe angeben %d angeben", i + 1);
    		for (j = 0; j<4; j++)
    		{
    			scanf("%d", &matrix[i][j]));     // Hier ist auch was zu viel
    		}
    
    		return 0;		// Das wurde schon bewerkt, steht falsch
    	}					// <-- Das Gegenstück sollte wohl am anfang der zweiten for() {} -Schleife zu finden sein
    
    }						// Hier meckert ja schon die Autoanalyse
    

    Eventuell wären ein paar Infos zur Aufgabe hilfreich, ich denke du willst die Einzelnen Werte des zwei dim. Array ausgeben? Das macht man am besten über zwei geschachtelte for-Schlifen und mit printf und nicht scanf.

    Eventuell wäre es in der Tat sinnvoll ersteinmal alles gescheit ein zu Rücken und einen guten Programmierstiel "Design" an zu eignen.



  • Danke für eure Hilfe, habe soweit alle Fehler gefunden. Das Ziel das ich mit diesem Programme habe ist das ich die einzelne Werte eingebe, was bis jetzt klappt und nach der Eingabe der Zahlen soll die 4x4 Matrix erscheinen. Das Problem hapert bei mir mit der Ausgabe, ich kann zwar die Zahlen eingeben, aber diese werden zum schluss nicht als 4x4 Matrix ausgegeben. Liegt an der Ausgabe ,komme aber nicht weiter. Habe es mit der Zeile 30 versucht jedoch erfolglos.

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    int i;
    int j;
    int matrix [4][4]=
    
    {
            { 1,  2,  3,  4},
            { 5,  6,  7,  8},
            { 9, 10, 11, 12},
            {13, 14, 15, 16}
        };
    
        for(i=0;i<4;i++)
    
        {
    
        printf("Reihe angeben %d angeben", i+1);
        for(j=0;j<4;j++)
        {
            scanf("%d",&matrix[i][j]);
        }
    
        }
        printf("%d", matrix[i][j]);
        return 0;
    
    }
    


  • Nach der for-i-Schleife, ist i = 4 und auch j = 4.

    Du möchtest also das Element matrix[4][4] ausgeben.
    Dieses existiert aber gar nicht, da der höchste Index jeweils 3 ist.

    Komisch, dass du bei der Eingabe jedes Element einzeln nimmst, bei der Ausgabe aber nicht dasselbe probierst.

    Tipp: Eine neue Zeile bekmmt man mit printf("\n"); oder puts(""); oder putchar('\n');

    Du musst an deinem Einrückungsstil arbeiten: https://de.wikipedia.org/wiki/Einrückungsstil



  • marvan556 schrieb:

    Das Problem hapert bei mir mit der Ausgabe, ich kann zwar die Zahlen eingeben, aber diese werden zum schluss nicht als 4x4 Matrix ausgegeben. Liegt an der Ausgabe ,komme aber nicht weiter. Habe es mit der Zeile 30 versucht jedoch erfolglos.

    Um solche Fehler zu vermeiden ist es nützlich seine Variablen so lokal wie möglich zu deklarieren.
    Also Deine Zeilen 6 und 7 raus und dann:

    for(int i=0;i<4;i++) 
    {
      printf("Reihe angeben %d angeben", i+1);
      for(int j=0;j<4;j++)
      {
        scanf("%d",&matrix[i][j]);
      }
    }
    printf("%d", matrix[i][j]);  // Holla! Fehlermeldung!?
    

Anmelden zum Antworten