pku1046

/**/ /*
循环处理
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;

}


你可能感兴趣的:(pku1046)