以下の配列sとtの差をとり、一番外のループの最後に更新された差を取り出さしたいの
ですが、思う結果がでません。
どうかご教授いただけますか。
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(void)
{
double s[3];
double tt[3][1]={9,10,11};
double t[3][1]={3,4,5};
double e[10][10];
double ferr[10][10];
int cou,re,j;
double err,a;
double *ptr;
a=0;
for(cou=0;cou< 5;cou++)
{
printf(cou%d\n,cou);
a=a+1;
err=0;
for ( re = 0; re <3; re++)
{
for ( j = 0; j <1; j++)
{
s[j]=tt[re][j]+a;
ferr[re][j]=(s[j]-t[re][j]);//差をとりたいです。
ptr= &err;
e[re][j]= *ptr;
printf(%lf\n,err);
printf(f %lf\n,ferr[re][j]);
}
}
a=a+1;
}
for ( re = 0; re <3; re++)
{
for ( j = 0; j <1; j++)
{
printf(最後のERROR%lf\n,e[re][j]);
}
}
return 0;
}
すいません。
こちらでお願いします。
開発環境はWIN2000、VC++6.0、コンソールアプリです。
#include stdafx.h
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
int main(void)
{
double s[3];
double tt[3][1]={9,10,11};
double t[3][1]={3,4,5};
double e[10][10];
double ferr[10][10];
int cou,re,j;
double err,a;
double *ptr;
a=0;
for(cou=0;cou< 5;cou++)
{
printf(cou%d\n,cou);
a=a+1;
err=0;
for ( re = 0; re <3; re++)
{
for ( j = 0; j <1; j++)
{
s[j]=tt[re][j]+a;
err=(s[j]-t[re][j]);
ferr[re][j]=(s[j]-t[re][j]);//差をとりたいです。
ptr= &err;
e[re][j]= *ptr;
printf(%lf\n,err);
printf(f %lf\n,ferr[re][j]);
}
}
a=a+1;
}
for ( re = 0; re <3; re++)
{
for ( j = 0; j <1; j++)
{
printf(最後のERROR%lf\n,e[re][j]);
}
}
return 0;
}
差をとる?きちんとferr[re][j]=(s[j]-t[re][j]);の部分で差をとっていますよ。printf
(f %lf\n,ferr[re][j]);での表示は全部同じ値になるでしょうけど。printf(最後の
ERROR%lf\n,e[re][j]);の部分で計算した差を表示表示したいってことですか?
はい。おっしゃるとおりです。
まぁ、最後の部分もきちんと表示しているみたいですね。ただ単に最初のdouble tt[3][1]=
{9,10,11};double t[3][1]={3,4,5};としているため、同じ値が表示されるのですよ。全部6
になりますよね。9 - 3 = 10 - 4 = 11 - 5 = 6 ですから。違う部分を聞いているのですか?
あっ!あってました。
すいません。
サスライの旅人さま、有難うございました。