#include<stdio.h>
struct color
{
int R;
int G;
int B;
};
int f(int a, int b, int c)
{
int sum;
sum = a*a + b*b + c*c;
return sum;
}
int main()
{
color c[16];
int x,y,z,i;
int m,n,l;
int min;
for(i=0;i<16;i++)
{
scanf("%d%d%d",&x,&y,&z);
c[i].R=x;
c[i].G=y;
c[i].B=z;
}
scanf("%d%d%d",&m,&n,&l);
while(m!=-1&&n!=-1&&l!=-1)
{
min=f(m-c[0].R,n-c[0].G,l-c[0].B);
for(i=0;i<16;i++)
{
if(f(m-c[i].R,n-c[i].G,l-c[i].B)<min) min=f(m-c[i].R,n-c[i].G,l-c[i].B);
}
for(i=0;i<16;i++)
{
if(f(m-c[i].R,n-c[i].G,l-c[i].B)==min)
{
printf("(%d,%d,%d) maps to (%d,%d,%d)\n",m,n,l,c[i].R,c[i].G,c[i].B);
}
}
scanf("%d%d%d",&m,&n,&l);
}
return 0;
}
struct color
{
int R;
int G;
int B;
};
int f(int a, int b, int c)
{
int sum;
sum = a*a + b*b + c*c;
return sum;
}
int main()
{
color c[16];
int x,y,z,i;
int m,n,l;
int min;
for(i=0;i<16;i++)
{
scanf("%d%d%d",&x,&y,&z);
c[i].R=x;
c[i].G=y;
c[i].B=z;
}
scanf("%d%d%d",&m,&n,&l);
while(m!=-1&&n!=-1&&l!=-1)
{
min=f(m-c[0].R,n-c[0].G,l-c[0].B);
for(i=0;i<16;i++)
{
if(f(m-c[i].R,n-c[i].G,l-c[i].B)<min) min=f(m-c[i].R,n-c[i].G,l-c[i].B);
}
for(i=0;i<16;i++)
{
if(f(m-c[i].R,n-c[i].G,l-c[i].B)==min)
{
printf("(%d,%d,%d) maps to (%d,%d,%d)\n",m,n,l,c[i].R,c[i].G,c[i].B);
}
}
scanf("%d%d%d",&m,&n,&l);
}
return 0;
}
本文介绍了一个基于C语言的颜色匹配算法实现。通过定义颜色结构体并计算颜色间的距离,找到最接近的目标颜色。程序首先读取16种颜色的RGB值,然后接收用户输入的目标颜色值,计算目标颜色与每种标准颜色之间的距离,并输出与目标颜色最接近的标准颜色。
884

被折叠的 条评论
为什么被折叠?



