C/C++の宿題を片付けます 102代目
■ このスレッドは過去ログ倉庫に格納されています
0644642
2008/01/12(土) 01:12:14>>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;
}
■ このスレッドは過去ログ倉庫に格納されています