テンプレートデータTと入力データDの一致度Cを計算するプログラムを作成しろという問題です。
C=(1/i・j)×ΣTij・Dij
で与えられています。Tijはテンプレートの画素(i,j)の値でDijは入力データ画素(i,j)の値です。画像データが2値画像で、黒を1、白を-1とします。画像は3×3の大きさです。
テンプレートデータTは
-1 1 -1
-1 1 -1
-1 1 -1
で与えられています。
入力データDは実行時に入力するします。Cを求めるプログラムを作成しろというのが問題です。
このプログラムでは答えが一致しません。どこが間違えているのでしょうか?よろしくお願いします。
#include <stdio.h>
int main(void)
{
int T[3][3]={
{-1,1,-1},
{-1,1,-1},
{-1,1,-1}
};
int a,b,c,d,e,f,g,h,i;
int D[3][3]={
{a,b,c},
{d,e,f},
{g,h,i}
};
printf("aを入力");
scanf("%d",&a);
printf("bを入力");
scanf("%d",&b);
printf("cを入力");
scanf("%d",&c);
printf("dを入力");
scanf("%d",&d);
printf("eを入力");
scanf("%d",&e);
printf("fを入力");
scanf("%d",&f);
printf("gを入力");
scanf("%d",&g);
printf("hを入力");
scanf("%d",&h);
printf("iを入力");
scanf("%d",&i);
int x,y;
int sum=0;
double C;
for(x=0;x<3;x++){
for(y=0;y<3;y++){
sum+=T[x][y]*D[x][y];
}
}
C=(1.0/(x*y))*sum;
printf("C=%.2f\n",C);
return 0;
}