D
Ich habe ein Problem mit einer Datenübergabe, dass ich nicht verstehe - wenn denn hier das Problem liegt.
Ich übergebe Werte in ein Array und zur Kontrolle lasse ich das Array dann in einer Protoklldatei speichern. So weit, so gut.
Verlasse ich jetzt die Schleife, in der die Berechnungen und Datenübergaben stattfinden, enthält das Array an den Stellen fehlerhafte Werte, an denen ich etwas verändert habe (betrifft nur eine Zeile).
Heir mal der Code:
Die Funktion, die die Problemfunktion aufruft und alle Parameter bereitstellt:
void Interpol(void)
{
//arraydeklaration und speicherbereitstellung
double **L=new double *[3],
**R=new double *[3];
for (int i=0; i<3; i++)
{
L[i] = new double [StrToInt(Form1->SG_KooList->Cells[7][1])];
R[i]= new double [StrToInt(Form1->SG_KooList->Cells[7][2])];
}
Calc(1,L,R); //Aufruf der Problemfunktion
//Speicherfreigaben...
hier der Code der Problemfunktion:
void Calc(int Zeile, double **ArrayA, double **ArrayB)
{
ofstream OutDatei;
OutDatei.open("höhe.txt", ios::trunc);
double SP;
int Start=0;
for (int i=0; i<StrToInt(Form1->SG_KooList->Cells[7][3]); i++)
{
for (int j=Start; j<StrToInt(Form1->SG_KooList->Cells[7][Zeile]);j++)
{
//...
//diverse Berechnungen
//...
//Höheninterpolation:
double DH=Z1*Sc/Sa;
double a=ArrayB[2][j-1],
b=a+DH,
c;
ArrayA[2][i]=b;
//(1)
OutDatei<<b<<"\t"<<ArrayA[2][i]<<endl; //Testausgabe in
//Protokolldatei = alles i.O.
Start=j;
}
}
}
for (int i=0; i<10; i++) //Kontrolle
{
//(2)
double a=ArrayA[2][i], //falsche Werte - es Scheint die erste
//Nachkommastelle entfernt zu sein
b=a+2.;
}
}
Ich kann mir nicht erklären, warum bei (1) alles i.O. ist und bei (2) nicht mehr.
Ich habe die vielen Hlfsvaria nur zur Kontrolle eingführt, da ich die Richtigkeit der Berechnung fest machen wollte.
vielen Dank für eure Hilfe