Help! (не пойму, в чем ошибка - переменная обнуляется сама!)
Правда на a это не может повлиять
Неа. Это выражение - сильное упрощение того, что в проге на самом деле, но там все переменные типа double.
double a,b,c;
a=1.0;
(Может ли это быть связано с тем, что a - элемент массива?)Так элемент или не элемент? Приведи конкретный код.
{
valarray<double>* a=A;
valarray<double>* aa=a;
valarray<double> b(B);
valarray<double> x(0.0,n);
int i,j,k;
for(k=0;k<n-1;k++)
{
for(i=k+1;i<n;i++)
{
for(j=0;j<n;j++)
{ // здесь а[i][k]=1
aa[i][j]=a[i][j]-a[j][k]*a[i][k]/a[k][k]; // а уже здесь а[i][k]=0
}
.....
ужос!магия!
у тебя тройной цикл и два индекса у массива. соответственно индексы повторяются.
Кстати, какой смысл использовать два указателя на один и тот же массив? Не говоря уже о том, что массив valarray-ев - солидная подстава.
double coeff=a[i][k]/a[k][k];
Не говоря уже о том, что вместо a[j][k] должно быть a[k][j].
А смысл? Оптимизатор это сам вытащит.
тут нужны были бы мега-телепатические возможности.
Каким образом он это сам вытащит, если при этом вытаскивании программа из неправильной становится правильной (если деления на нуль не произойдет по дороге)?
А смысл? Оптимизатор это сам вытащит.это повод не думать?
ты меняешь aa, значит a тоже меняется
Это повод думать о другом.
При j = k a[i][j] = a[i][k] обнуляется. Цикл надо сделать от k + 1



Оставить комментарий
barbara1
Please, help!Может я, конечно, совсем тормоз, но проблема никак не хочет решаться. Если совсем упростить, то проблема следующая:
double a,b,c;
a=1.0;
/*далее некоторое действие, вроде */ b=2*a/c;
после этого a=0 !
Почему так получается?
(Может ли это быть связано с тем, что a - элемент массива?)
(программирую в C++ Visual)