|
C/C++ Quellcode
|
1
|
punkt allpoints[MAXLEN];
|
Definition einer Struktur Instanze/Variable als Array mit MAXLEN=10 Elementen. -> Ok
|
C/C++ Quellcode
|
1
|
allpoints[MAXLEN]=getpunkte(allpoints, MAXLEN);
|
Zuweissung des Ruckgabewertes der Funktion an das (MAXLEN=) 10 Element des Arrays allpoints.
-> Fehler, das Array hat zwar 10 Elemente, jedoch zählt man in C++ bei Array mit 0 beginnend, dh. das 10 Element ist in Wirklichkeit das 9.
|
C/C++ Quellcode
|
1
|
return(point[MAXLEN]);
|
Hier auch, Zugriff auf das 10 Element welches in diesem Fall, aufgrund des Übergabeparameters point <-> allpoints, wiederum nicht zur Verfügung steht.
|
C/C++ Quellcode
|
1
2
3
4
5
|
for(double t=0.0; t<len; t=t+0.1)
{
point[(int)t].x = (float)t;
...
}
|
Wenn Len=MAXLEN=10 ist, und du in 0.1 Schritten druchläufst, heisst dies du möchtest 100 Elemente in das 10-Elemente-Array quetschen?
Ist dir klar das durch eine Typenkonventierung von double in int die Komastellen abgeschnitten werden? -> (int)0.5 = 0 -> Du schreibst also mehrmals an die selbe Stelle des Arrays einen anderen Wert rein.
Wie wärs mal mit:
- MAXLEN erhöhen um mehr Werte Speichern zu können
- Den Rückgasbetyp der getpunkte Funktion entfernen; dass direkt schreiben in das Array als Parameter bwewirkt so schon, dass die Werte dann automatisch nach Verlassen der Funktion in der Übergebenden Variable allpoints gespeichert sind.
- Entweder nur Englisch oder nur Deutsch verwenden
Mfg Rushh0ur