ausrechnung bei matrix



  • hallo,
    ich habe ein programm geschrieben, in dem zahlen eingelesen werden. Nach einem einfügen einer schleife zeit das programm mir nur noch grosse werte. Wenn ich z.b. 3 eingebe wird mir in der Auswertung z.b. -370086 angezeigt.

    #include <stdio.h>
    
    #define X 3
    #define Y 4
    
    int main()
    {
    int i,j=0;
    int data[X][Y];
    
    printf("Bitte die Zahlen eingeben:\n");
    for (i=1; i<=X; i++)
    {
    printf("Zahlenfolge%d:", i);
    scanf("%d", &data[i][j]);
    }
    
    printf("Zahlenfolge\tZahl\n");
    for(i=1; i<=X; i++)
    {
    printf("%d\t\t%d\n", i, data[i][j]);
    }
    
    	return 0;
    }
    

    Aber an sich dürfte der Code richtig sein, daher weiss ich nicht wo der Fehler liegt.

    gruss,
    disturbia



  • Der Fehler liegt in deiner for()-Schleife - das erste Element des Arrays hat den Index 0, das letzte den Index X-1. Das Element data[X][0] (das du im letzten Durchlauf der Schleife einliest) liegt bereits außerhalb des Arrays - mit etwas "Glück" ist es eine deiner Zählvariablen.



  • das habe ich jetzt nicht so recht verstanden. Du redest von der 2. for Schleife? Wie kann ich das Problem beheben?



  • i=1; i<=X bei beiden durch i=0; i<X ersetzen. "Alles fängt bei 0 an". 😉



  • disturbia schrieb:

    das habe ich jetzt nicht so recht verstanden. Du redest von der 2. for Schleife? Wie kann ich das Problem beheben?

    Ich rede von beiden Schleifen - du mußt sie anpassen auf "for(i=0;i<X;i++)..." (übrigens ist die erste Schleife kritischer, weil sie in fremde Speicherbereiche schreibt).

    PS: Wozu hast du überhaupt ein zweidimensionales Array angelegt, wenn du nur die erste Spalte (j=0) verwendest?



  • [quote="CStoll"]

    disturbia schrieb:

    PS: Wozu hast du überhaupt ein zweidimensionales Array angelegt, wenn du nur die erste Spalte (j=0) verwendest?

    Ich werde das Programm noch ausweiten und dann brauche ich die zweite Dimension auch noch.

    Ja es klappt. Dankeschön.


Anmelden zum Antworten