DanDanger
20-06-2003, 17:57
Hallo,
ich habe hier ein ziemlich Seltsames Problem :
Eine Funktion in meinem Programm wird ein float-Array Übergeben.
Die Funktion soll dieses Array nun in 2 Arrays aufteilen.
Hintergrund : Das "Ursprungsarray" beinhaltet Punktkoordinaten, also (x, y)-Wertepaare.
Die Funktion soll nun Alle x-Werte in das Array PX, und alle y-Werte in das Array PY schreiben.
Das ganze habe ich so implementiert :
float PunkteC[13] = {0, 0, 0, 5, 0, 5, 10, 10, 10, 10, 20, 20} ;
/*
Ertwartet die Anzahl der Punkte des Arrays (Also : Arraygrösse/2) und einen
Zeiger auf das Array
*/
void Test(int p_NumPoints, float *p_ptPoints)
{
float PX[6] ; // 12 Werte im Array : = 6 Punkte
float PY[6] ; // => 6 X und 6 Y Werte
double t = 0 ;
float x = 0 ;
float y = 0 ;
int i = 0 ; ;
int ZaehlX = 0 ;
int ZaehlY = 0 ;
/* Das Punkte-Array auf 2 Versch. Arrays (PX, PY) Aufteilen */
for(int xA=0; xA < (p_NumPoints * 2); xA+=2)
{
PX[ZaehlX] = p_ptPoints[xA] ;
cout << "PX[" << ZaehlX << "] = " << PX[ZaehlX] << endl ;
ZaehlX++ ;
}
for(int yA=1; yA <= (p_NumPoints * 2); yA+=2)
{
PY[ZaehlY] = p_ptPoints[yA] ;
cout << "PY[" << ZaehlY << "] = " << PY[ZaehlY] << endl ;
ZaehlY++ ;
}
for(int j=0; j < 6; j++)
{
cout << "X : " << PX[j] << ", " ;
}
cout << endl ;
for(int jA=0; jA < 6; jA++)
{
cout << "Y : " << PY[jA] << ", " ;
}
cout << endl ;
}
int main()
{
cout << "RUNNING....." << endl ;
Test(6, PunkteC) ;
return 0 ;
}
Das Problem ist nun :
In der "Zuweisungsschleife" wird alles Korrekt zugewiesen, aber die beiden Kontrollabfragen nach der zuweisung geben nur Schei*** aus:(
Irgendwas Passiert mir den Arrays PX und PY, denn sobald die "Zuweisungsschleifen" verlassen wurden, sind alle Werte in PX und PY "durcheinander".
Meine Frage : Wieso ?????
PS: Der Code scheint mir sauber zu sein, aber ich benutze noch die gcc-Version 2.95.3.
Kann das ein Bug vom gcc sein ?
ich habe hier ein ziemlich Seltsames Problem :
Eine Funktion in meinem Programm wird ein float-Array Übergeben.
Die Funktion soll dieses Array nun in 2 Arrays aufteilen.
Hintergrund : Das "Ursprungsarray" beinhaltet Punktkoordinaten, also (x, y)-Wertepaare.
Die Funktion soll nun Alle x-Werte in das Array PX, und alle y-Werte in das Array PY schreiben.
Das ganze habe ich so implementiert :
float PunkteC[13] = {0, 0, 0, 5, 0, 5, 10, 10, 10, 10, 20, 20} ;
/*
Ertwartet die Anzahl der Punkte des Arrays (Also : Arraygrösse/2) und einen
Zeiger auf das Array
*/
void Test(int p_NumPoints, float *p_ptPoints)
{
float PX[6] ; // 12 Werte im Array : = 6 Punkte
float PY[6] ; // => 6 X und 6 Y Werte
double t = 0 ;
float x = 0 ;
float y = 0 ;
int i = 0 ; ;
int ZaehlX = 0 ;
int ZaehlY = 0 ;
/* Das Punkte-Array auf 2 Versch. Arrays (PX, PY) Aufteilen */
for(int xA=0; xA < (p_NumPoints * 2); xA+=2)
{
PX[ZaehlX] = p_ptPoints[xA] ;
cout << "PX[" << ZaehlX << "] = " << PX[ZaehlX] << endl ;
ZaehlX++ ;
}
for(int yA=1; yA <= (p_NumPoints * 2); yA+=2)
{
PY[ZaehlY] = p_ptPoints[yA] ;
cout << "PY[" << ZaehlY << "] = " << PY[ZaehlY] << endl ;
ZaehlY++ ;
}
for(int j=0; j < 6; j++)
{
cout << "X : " << PX[j] << ", " ;
}
cout << endl ;
for(int jA=0; jA < 6; jA++)
{
cout << "Y : " << PY[jA] << ", " ;
}
cout << endl ;
}
int main()
{
cout << "RUNNING....." << endl ;
Test(6, PunkteC) ;
return 0 ;
}
Das Problem ist nun :
In der "Zuweisungsschleife" wird alles Korrekt zugewiesen, aber die beiden Kontrollabfragen nach der zuweisung geben nur Schei*** aus:(
Irgendwas Passiert mir den Arrays PX und PY, denn sobald die "Zuweisungsschleifen" verlassen wurden, sind alle Werte in PX und PY "durcheinander".
Meine Frage : Wieso ?????
PS: Der Code scheint mir sauber zu sein, aber ich benutze noch die gcc-Version 2.95.3.
Kann das ein Bug vom gcc sein ?