Run time check failure
-
Beim Ende des Durchlaufes öffnet sich ein neues Fenster mit dem Hinweis:
"Debug Error
Run Time Check Failure #2 - stack around the variable ´funktionswerte´ was corrupted."
Kann mir jemand netterweise kurz erklären, was ich falsch gemacht habe?
Danke.// Aufg1i.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung. // Es sei die Funktion y=mx+n mit m=2 und n=-5. Die Funktionswerte von 0-20 sollen in einem Array gespeichert werden. #include "stdafx.h" #include <iostream> using namespace std; int main() { cout << "Ausgabe der Funktionswerte." <<endl; int funktionswerte [20]; int x; for( int x = 0; x <= 20; x++) { funktionswerte [x]=(2*x -5); cout << funktionswerte[x] <<endl; } return 0; }
-
Mach mal das Array 21 Elemente gross. Und x musst du nicht zusätzlich ausserhalb des Schleifenkopfs definieren.
-
Jetzt sieht es zwar schöner aus, aber die Fehlermeldung ist leider noch aktuell.
Eine andere Frage: Wenn ich die Anzahl der negativen Funktionswerte bspw.
zählen will, mit welchem Ausdruck muss ich mein bestehendes Programm erweitern?
-
Flugsie schrieb:
Jetzt sieht es zwar schöner aus, aber die Fehlermeldung ist leider noch aktuell.
Eine andere Frage: Wenn ich die Anzahl der negativen Funktionswerte bspw.
zählen will, mit welchem Ausdruck muss ich mein bestehendes Programm erweitern?Nur falls es aus der ersten Antwort nicht klar wurde.
Du legst ein Array mit 20 (zwanzig) elementen an.
int funktionswerte [20];dann machst Du eine chleife mit 21 (Einundzwanzig) Durchläufen:
for( int x = 0; x <= 20; x++)und greifst mit x auf die elemente des Arrays zu. da 21 > als 20 ist, knallt das beim letzten Schleifendurchlauf dann durch.
Warum 21?
Nun, das erste Element hat den Index 0, das zweite Element den Index 1 usw. Demnach hat das zwanzigste Element den Index 19 und nicht 20...
Die Schleife muß also lauten:
for( int x = 0; x < 20; x++)
-
Jupp, logisch, [20] zu [21] ändern. Das ich auch immer alles übersehen muss...
-
musst du nicht, schließlich gibt es dazu entsprechende Werkzeuge (Stichwort statistische Codeanalyse), das spuckt z.B. Visual Studio raus:
deleteme.cpp(14) : warning C4101: 'x' : unreferenced local variable
deleteme.cpp(16) : warning C6246: Local declaration of 'x' hides declaration of the same name in outer scope. For additional information, see previous declaration at line '14' of 'deleteme.cpp': Lines: 14
deleteme.cpp(18) : warning C6201: Index '20' is out of valid index range '0' to '19' for possibly stack allocated buffer 'funktionswerte'
deleteme.cpp(19) : warning C6201: Index '20' is out of valid index range '0' to '19' for possibly stack allocated buffer 'funktionswerte'