Вы здесь

вопрос по C++

Здравствуйте!

Подскажите, из-за чего это может быть? Вот кусок программы

fprintf(stderr,"test=%e\n",Hrho12[i]);
double tt=0.5*(mp12[i]+mm12[i])-0.5*a12[i]*(rhop12[i]-rhom12[i]);
Hrho12[i]=0.5*(mp12[i]+mm12[i])-0.5*a12[i]*(rhop12[i]-rhom12[i]);
fprintf(stderr,"test =%e\n",tt);
fprintf(stderr,"test =%e\n",Hrho12[i]);

выдает

test=0.000000e+00
test =nan
test =4.417657e+10

такое ощущение, что перед первым присваиванием элементы всех массивов
указывают неизвестно куда, а потом он "вспоминает" что так не надо.

все массивы опеределяются заранее следующим способом

double *mp12;
mp12=(double*)malloc(numcells*sizeof(double));
if(mp12==NULL)
{
fprintf(stderr,"Can't allocate memory\n");
exit(1);
}

Может надо по-другому массивы определять?

Форум: