Posted on 2010-08-14 01:38
Kevin_Zhang 阅读(196)
评论(0) 编辑 收藏 引用 所属分类:
搜索 、
数学
/**//*
循环处理
1)定义数组long int dis[17],无需开方,直接记录平方和;分别计算绘制色与标准色的空间距离,保存到该数组中;
2)从dis数组找到最小值的下标,即得到最近的标准色的下标。
3)输出结果。
数据结构:结构体加数组。
*/
#include"iostream"
#include"stdio.h"
#include"climits "
using namespace std;
typedef struct rgb
{
int r;
int g;
int b;
}rgb;
rgb srgb[17],argb;
int dis[17],temp;
int result;
int main()
{
int i;
for(i=0;i<16;i++)
{scanf("%d%d%d",&srgb[i].r,&srgb[i].g,&srgb[i].b);}
scanf("%d%d%d",&argb.r,&argb.g,&argb.b);
while(argb.b>-1)
{
for(i=0;i<16;i++)
{
dis[i]=(argb.r-srgb[i].r)*(argb.r-srgb[i].r)+(argb.g-srgb[i].g)*(argb.g-srgb[i].g)+(argb.b-srgb[i].b)*(argb.b-srgb[i].b);
}
temp=INT_MAX;
result=-1;
for(i=0;i<16;i++)
{
if(dis[i]<temp)
{temp=dis[i];
result=i;
}
}
printf("(%d,%d,%d) maps to (%d,%d,%d)\n",argb.r,argb.g,argb.b,srgb[result].r,srgb[result].g,srgb[result].b);
scanf("%d%d%d",&argb.r,&argb.g,&argb.b);
}
return 0;
}