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.