>>640
>>642 をちょっと修正した
>aとbを同時に扱ってはならない
に抵触するかもしれない
#include<iostream>

int main(void){
double a[10]={0.0, 0.1, 0.0, 2.2, 0.0, 0.0, 3.3, 4.4, 0.0, 5.5};
double b[10]={0.1, 0.0, 2.2, 0.0, 0.0, 3.3, 4.4, 0.0, 5.5, 0.0};
double c=0.0;
int i, j, skip_flag[10]={0};

// 改変のターン ここから
for(i=0;i<10;i++) if(a[i]==0.0) skip_flag[i]=1;
for(i=0;i<10;i++) if(b[i]==0.0) skip_flag[i]=1;
for(i=0,j=0;i<10;i++) if(!skip_flag[i]) a[j++]=a[i];
for(i=0,j=0;i<10;i++) if(!skip_flag[i]) b[j++]=b[i];
// 改変のターン ここまで

// 乗算のターン ここから
for(i=0;i<j;i++) c+=a[i]*b[i];
// 乗算のターン ここまで

std::cout << c << std::endl;

return 0;
}