Xetoxyc
Lieutenant
- Registriert
- Nov. 2010
- Beiträge
- 872
Sers Leute hab mal ne Frage was an meinem code "Falsch" ist
zunächst sollte mal gesagt werden das er funktioniert und sobald ich im vs2010 nen breakpoint reinsetze tritt der fehler auch nichtmehr auf
nur wenn ich eben ohne breakpoint starte.
Debug-Modus-Fehlermeldung:
Release-Modus-Fehlermeldung:
Auf die main und so verzicht ich hier mal da diese wunderbar funktioniert und nicht relevant ist.
so und hier nochmal den kompletten code für diejenigen dies ausprobieren wollen
einfach leeres c++ Projekt erstellen und eine cpp anlegen
zunächst sollte mal gesagt werden das er funktioniert und sobald ich im vs2010 nen breakpoint reinsetze tritt der fehler auch nichtmehr auf
nur wenn ich eben ohne breakpoint starte.
Debug-Modus-Fehlermeldung:
Code:
Run-Time Check Failure #2 - Stack around the variable 'arrValueFind' was corrupted.
Release-Modus-Fehlermeldung:
Code:
Unbehandelte Ausnahme bei 0x009e15e0 in test1.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0x00000009.
Auf die main und so verzicht ich hier mal da diese wunderbar funktioniert und nicht relevant ist.
Code:
const int nArrShownFive_Length = 5;
const int nArrValues_Length = 100;
int arrValues[nArrValues_Length]; // Komplett mit randomzahlen gefüllt
void Show_TimesShown_Added()
{
int arrTimesFind[5];
int arrValueFind[5];
for (int a = 0 ; a < nArrShownFive_Length; a += 1)
{
arrTimesFind[a] = -1;
arrValueFind[a] = -1;
}
for (int a = 0; a < nArrValues_Length; a += 1)
{
[U][B]int nTmpValue = arrValues[a];[/B][/U] // Hier der StopPoint beim Release Modus
int nTmpTimesShown = 0;
for (int b = 0; b < nArrValues_Length; b += 1)
{
if(nTmpValue == arrValues[b])
{
nTmpTimesShown += 1;
}
}
bool boolAlreadyGotActValue = false;
for (int b = 0; b < nArrShownFive_Length; b += 1)
{
if(nTmpValue == arrValueFind[b])
{
boolAlreadyGotActValue = true;
}
}
if (!boolAlreadyGotActValue)
{
bool boolHaveFreePlace = false;
for (int b = 0; b < nArrShownFive_Length; b += 1)
{
if(arrValueFind[b] == -1)
{
boolHaveFreePlace = true;
arrTimesFind[b] = nTmpTimesShown;
arrValueFind[b] = nTmpValue;
b = nArrShownFive_Length;
}
}
if(!boolHaveFreePlace)
{
bool boolGotHigherTimesShownValue = false;
for (int b = 0; b < nArrShownFive_Length; b += 1)
{
if(nTmpTimesShown > arrTimesFind[b])
{
boolGotHigherTimesShownValue = true;
}
}
if(boolGotHigherTimesShownValue)
{
int nLowestElementNumber = -1;
int nTmpLowestTimesShown = arrTimesFind[0];
for (int b = 0; b < nArrShownFive_Length; b += 1)
{
if(arrTimesFind[b] < nTmpLowestTimesShown)
{
nTmpLowestTimesShown = arrTimesFind[b];
nLowestElementNumber = b;
}
}
arrTimesFind[nLowestElementNumber] = nTmpTimesShown ;
arrValueFind[nLowestElementNumber] = nTmpValue;
}
}
}
}
for (int a = 0; a < nArrShownFive_Length; a += 1)
{
int nTmpTimes;
int nTmpValue;
for(int b = 1; b < nArrShownFive_Length; b +=1)
{
if (arrTimesFind[b] > arrTimesFind[b-1])
{
nTmpTimes = arrTimesFind[b];
arrTimesFind[b]=arrTimesFind[b-1];
arrTimesFind[b-1] = nTmpTimes;
nTmpValue = arrValueFind[b];
arrValueFind[b]=arrValueFind[b-1];
arrValueFind[b-1] = nTmpValue;
}
}
}
for (int a = 0; a < nArrShownFive_Length; a += 1)
{
cout << "Die " << a+1 << ". haefigste Zahl ist " << arrValueFind[a] << " sie kommt " << arrTimesFind[a] << " mal vor!" << endl;
}
}
so und hier nochmal den kompletten code für diejenigen dies ausprobieren wollen
einfach leeres c++ Projekt erstellen und eine cpp anlegen
Code:
#include <iostream>
#include <time.h>
using namespace std;
const int nArrValues_Length = 100;
const int nArrShownFive_Length = 5;
int arrValues[nArrValues_Length];
void Show_Values();
void Show_Minimum();
void Show_Maximum();
void Do_Show_Middle();
void Show_TimesShown();
void Do_BubbleSort();
void Show_TimesShown_Added();
int main()
{
srand((unsigned) time(NULL));
for( int a = 0; a < nArrValues_Length; a += 1)
{
arrValues[a] = rand() % 10+1;
}
int nChoose = -1;
while (nChoose != 0)
{
cout << "MENU" << endl;
cout << "0 --> ENDE" << endl;
cout << "1 --> Messwerte anzeigen" << endl;
cout << "2 --> Minimum" << endl;
cout << "3 --> Maximum" << endl;
cout << "4 --> Mittelwert" << endl;
cout << "5 --> Haeufigste Zahl" << endl;
cout << "6 --> Haeufigste Zahl Extreme" << endl;
cout << "7 --> Sortieren" << endl;
cout << "Auswahl: "; cin >> nChoose;
while (nChoose > 7 || nChoose < 0)
{
cout << "Ungültige Auswahl!";
cout << "Wert erneut eingeben: "; cin >> nChoose;
}
cout << endl << endl;
switch (nChoose)
{
case (0):
{
return 0;
break;
}
case (1):
{
Show_Values();
break;
}
case (2):
{
Show_Minimum();
break;
}
case (3):
{
Show_Maximum();
break;
}
case (4):
{
Do_Show_Middle();
break;
}
case (5):
{
Show_TimesShown();
break;
}
case (6):
{
Show_TimesShown_Added();
break;
}
case (7):
{
Do_BubbleSort();
break;
}
}
cout << endl << endl;
}
}
void Show_Values()
{
for(int a = 0 ; a < nArrValues_Length; a += 1)
{
if (a > 0 && a % 20 == 0)
{
cout << endl;
}
cout << " ";
if (arrValues[a] < 10)
{
cout << " " << arrValues[a];
}
else if (arrValues[a] < 100)
{
cout << " " << arrValues[a];
}
else if (arrValues[a] < 1000)
{
cout << "" << arrValues[a];
}
else
{
cout << arrValues[a];
}
}
}
void Show_Minimum()
{
int nMin = arrValues[0];
for (int a = 0; a < nArrValues_Length; a += 1)
{
if(arrValues[a] < nMin)
{
nMin = arrValues[a];
}
}
cout << "Minimum: " << nMin;
}
void Show_Maximum()
{
int nMax = arrValues[0];
for (int a = 0; a < nArrValues_Length; a += 1)
{
if(arrValues[a] > nMax)
{
nMax = arrValues[a];
}
}
cout << "Maximum: " << nMax;
}
void Do_Show_Middle()
{
int nSum = 0;
for (int a = 0; a < nArrValues_Length; a += 1)
{
nSum += arrValues[a];
}
cout << "Mittelwert: " << nSum/nArrValues_Length;
}
void Show_TimesShown()
{
int nMostValue = -1;
int nTimesShown = -1;
for (int a = 0; a < nArrValues_Length; a += 1)
{
int tmpNMostValue = arrValues[a];
int tmpNTimesShown = 0;
for (int b = 0; b < nArrValues_Length; b += 1)
{
if (arrValues[a] == arrValues[b])
{
tmpNTimesShown += 1;
}
}
if (tmpNTimesShown > nTimesShown)
{
nTimesShown = tmpNTimesShown;
nMostValue = tmpNMostValue;
}
}
cout << "Haufigste Zahl: " << nMostValue; cout << endl;
cout << "Anzahl der Haufigkeit: " <<nTimesShown ; cout << endl;
}
void Do_BubbleSort()
{
for (int a = 0; a < nArrValues_Length; a += 1)
{
int nTmp;
for(int b = 1; b < nArrValues_Length; b +=1)
{
if (arrValues[b] < arrValues[b-1])
{
nTmp = arrValues[b];
arrValues[b]=arrValues[b-1];
arrValues[b-1] = nTmp;
}
}
}
}
void Show_TimesShown_Added()
{
int arrTimesFind[5];
int arrValueFind[5];
for (int a = 0 ; a < nArrShownFive_Length; a += 1)
{
arrTimesFind[a] = -1;
arrValueFind[a] = -1;
}
for (int a = 0; a < nArrValues_Length; a += 1)
{
int nTmpValue = arrValues[a];
int nTmpTimesShown = 0;
for (int b = 0; b < nArrValues_Length; b += 1)
{
if(nTmpValue == arrValues[b])
{
nTmpTimesShown += 1;
}
}
bool boolAlreadyGotActValue = false;
for (int b = 0; b < nArrShownFive_Length; b += 1)
{
if(nTmpValue == arrValueFind[b])
{
boolAlreadyGotActValue = true;
}
}
if (!boolAlreadyGotActValue)
{
bool boolHaveFreePlace = false;
for (int b = 0; b < nArrShownFive_Length; b += 1)
{
if(arrValueFind[b] == -1)
{
boolHaveFreePlace = true;
arrTimesFind[b] = nTmpTimesShown;
arrValueFind[b] = nTmpValue;
b = nArrShownFive_Length;
}
}
if(!boolHaveFreePlace)
{
bool boolGotHigherTimesShownValue = false;
for (int b = 0; b < nArrShownFive_Length; b += 1)
{
if(nTmpTimesShown > arrTimesFind[b])
{
boolGotHigherTimesShownValue = true;
}
}
if(boolGotHigherTimesShownValue)
{
int nLowestElementNumber = -1;
int nTmpLowestTimesShown = arrTimesFind[0];
for (int b = 0; b < nArrShownFive_Length; b += 1)
{
if(arrTimesFind[b] < nTmpLowestTimesShown)
{
nTmpLowestTimesShown = arrTimesFind[b];
nLowestElementNumber = b;
}
}
arrTimesFind[nLowestElementNumber] = nTmpTimesShown ;
arrValueFind[nLowestElementNumber] = nTmpValue;
}
}
}
}
for (int a = 0; a < nArrShownFive_Length; a += 1)
{
int nTmpTimes;
int nTmpValue;
for(int b = 1; b < nArrShownFive_Length; b +=1)
{
if (arrTimesFind[b] > arrTimesFind[b-1])
{
nTmpTimes = arrTimesFind[b];
arrTimesFind[b]=arrTimesFind[b-1];
arrTimesFind[b-1] = nTmpTimes;
nTmpValue = arrValueFind[b];
arrValueFind[b]=arrValueFind[b-1];
arrValueFind[b-1] = nTmpValue;
}
}
}
for (int a = 0; a < nArrShownFive_Length; a += 1)
{
cout << "Die " << a+1 << ". haefigste Zahl ist " << arrValueFind[a] << " sie kommt " << arrTimesFind[a] << " mal vor!" << endl;
}
}