Array Werte werden nicht übernommen

Assanur

Grünschnabel
Hallo,
ich habe wiedermal ein Problem. Es geht darum, dass ich in einer Schleife Werte berechne und diese in ein 40000*200 Array schreibe.
Dann muss ich dieselben Werte in einer darauffolgenden Schleife zusammenzählen.
Mein Problem ist jetzt, dass ich zwar in der 1. Schleife die Werte im Array drin habe (überprüfung mit Bildschirmausgabe, bzw. Dateiausgabe), in der 2. Schleife aber nicht, dort besteht mein Array nur aus Nullen.

Ich verwende Visual Studio 2005

Code:
while (k<=40000)
{  k++;
  //diverse Berechnungen
   for (j=0; j<=200; j++)
   {
    //diverse Berechnungen
      for (i=0; i<=5000; i++)
      {
       //diverse Berechnungen				
		if (A_P_i != 0 || A_P_neg_i!=0)
		{
			Problem_Array[k][j] += (((A_P_i + A_P_neg_i)/Zeit_1)*(Zeitintervall/1000));
			cout <<"\nArray ["<<k<<"]["<<j<<"]["<<i<<"] = "<<Problem_Array[k][j]<<endl; 
		}//if				
	}//for i
   }//for j
}//while k
    n=k;
	for (j=a; j<200; j++)
	{ 
		for (k=2; k<=n; k++); 
		{	
			Addition[j] += Problem_Array[k][j];
			cout<<"\nProblem_Array = "<<Problem_Array[k][j]<<endl; 
		}
		cout <<"\nAddition "<<j<<" = "<<Addition[j]<<endl; 
       }

gibt es da einen Trick? oder warum löscht er mir, bzw. überschreibt er mir das Array zwischen den Schleifen mit 0, im Code ist nichts vorhanden was das verursachen könnte.

schönen Gruß
Assanur
 
Zuletzt bearbeitet:
Zeig mal wie du den Array anlegst?
Heap? Dann geht der Index bei nem Array von 0 ... size-1 und nicht von 0 ... size.
 
Code:
Problem_Array = new float*[50000];
   for (k=0; k<50000; k++)
   {	
	Problem_Array[k] = new float [300];
   }

for (k=0; k<50000; k++)
   {	for (j=0; j<300; j++)
	{
		Abtrag_Bahn[k][j] = 0; 
	}
}

ich leg das Array mit der new funktion an, und initialisiere es anschließend mit 0, wobei ich mit der Lösung für das initialisieren nicht sicher bin ob es nicht eine elegantere Lösung gibt. Aber zumindest funktioniert es.

Bezug nehmend auf meinen 1. Post habe ich festgestellt, dass wenn ich den Array-Wert in der j-Schleife ausgebe, ebenfalls schon nur noch 0-Werte bekomme. Wie gesagt in der i Schleife gibt er mir die Richtigen Werte aus.

Code:
a=2; 
P=102; 
Anzahl_J=Eingabwert_J; 
while (P>P_x)
{  k++;
  P = P-delta_P; 
  //diverse Berechnungen
   for (j=a; j<Anzahl_J; j++)
   {
    //diverse Berechnungen
      Anzahl_I = winkel_Alpha*2/winkel_Beta;
      for (i=0; i<Anzahl_I; i++)
      {
       //diverse Berechnungen				
		if (A_P_i != 0 || A_P_neg_i!=0)
		{
			Problem_Array[k][j] += (((A_P_i + A_P_neg_i)/Zeit_1)*(Zeitintervall/1000));
			cout <<"\nArray ["<<k<<"]["<<j<<"]["<<i<<"] = "<<Problem_Array[k][j]<<endl;  // HIER WERDEN DIE WERTE KORREKT ANGEZEIGT
		}//if				
	}//for i
        cout <<"\nArray ["<<k<<"]["<<j<<"]["<<i<<"] = "<<Problem_Array[k][j]<<endl; // HIER WERDEN NUR NULLEN ANGEZEIGT
   }//for j
}//while k

Das mit den Schleifengrößen ist mir bewusst, meine Schleifen laufen auch eigentlich auf ein dynamisches Ende hin, die Arrays sind am maximalwert bemessen.

hab da im code was editiert
 
Zuletzt bearbeitet:
Zurück