大家帮我看看 为什么会错呢?

genguyige 2009-07-20 04:35:16
#include"stdio.h"
#include"math.h"
#include"conio.h"
void main()
{
int a[16][3],i,j=0,b[3];
double e=0,d,min=10000;
for(i=0;i<16;i++)
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
}
while(1)
{
for(i=0;i<3;i++)
scanf("%d",&b[i]);
if(b[0]==-1&&b[1]==-1&&b[2]==-1) break;
for(i=0;i<16;i++)
{
e=(a[i][0]-b[0])*(a[i][0]-b[0])+(a[i][1]-b[1])*(a[i][1]-b[1])+(a[i][2]-b[2])*(a[i][2]-b[2]);
d=sqrt(e);
if(d<min) {j=i;min=d;}
}
printf("%d",min);
printf("(%d,%d,%d)maps to(%d,%d,%d)",b[0],b[1],b[2],a[j][0],a[j][1],a[j][2]);

}
}

测试的数据为
0 0 0
255 255 255
0 0 1
1 1 1
128 0 0
0 128 0
128 128 0
0 0 128
126 168 9
35 86 34
133 41 193
128 0 128
0 128 128
128 128 128
255 0 0
0 1 0
0 0 0
255 255 255
253 254 255
77 79 134
81 218 0
-1 -1 -1
结果应该为
(0,0,0) maps to (0,0,0)
(255,255,255) maps to (255,255,255)
(253,254,255) maps to (255,255,255)
(77,79,134) maps to (128,128,128)
(81,218,0) maps to (126,168,9)
...全文
94 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
kojie_chen 2009-07-21
  • 打赏
  • 举报
回复
表示错误
meipen 2009-07-20
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 meipen 的回复:]
while(1)
{
min=1000;/*这个地方初始化一下就可以了*/
for(i=0;i <3;i++)
scanf("%d",&b[i]);
[/Quote]
meipen 2009-07-20
  • 打赏
  • 举报
回复
刚才让你改的,改了吗
meipen 2009-07-20
  • 打赏
  • 举报
回复
mid=(top+bottom)/2;
这个位置改为‘+’就可以了
genguyige 2009-07-20
  • 打赏
  • 举报
回复

#include"stdio.h"
#include"math.h"
#include"conio.h"
void main()
{
int a[16][3],i,j=0,b[3];
double e=0,d,min=10000;
for(i=0;i <16;i++)
for(j=0;j <3;j++)
{
scanf("%d",&a[i][j]);
}
while(1)
{
for(i=0;i <3;i++)
scanf("%d",&b[i]);
if(b[0]==-1&&b[1]==-1&&b[2]==-1) break;
for(i=0;i <16;i++)
{
e=(a[i][0]-b[0])*(a[i][0]-b[0])+(a[i][1]-b[1])*(a[i][1]-b[1])+(a[i][2]-b[2])*(a[i][2]-b[2]);
d=sqrt(e);
if(d <min) {j=i;min=d;}
}
printf("%d",min);
printf("(%d,%d,%d)maps to(%d,%d,%d)",b[0],b[1],b[2],a[j][0],a[j][1],a[j][2]);

}
}发错了 是这个
genguyige 2009-07-20
  • 打赏
  • 举报
回复
我很郁闷 我的代码硬是A不了 也不知道又有什么问题
#include<stdio.h>
void main()
{
long a[17][17],i,j,n,r,g,b,m,x,y,z;
for(i=0;i<16;i++)
scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
while(scanf("%d%d%d",&r,&g,&b)&&r>=0&&g>=0&&b>=0)
{
n=9999999;
for(i=0;i<16;i++)
{ m=(r-a[i][0])*(r-a[i][0])+(g-a[i][1])*(g-a[i][1])+(b-a[i][2])*(b-a[i][2]);
if(m<n)
{n=m;x=a[i][0];y=a[i][1];z=a[i][2];}
}
printf("(%d,%d,%d) maps to (%d,%d,%d)\n",r,g,b,x,y,z);
}
}
它老说我Presentation Error 怎么回事啊 到底
projoy 2009-07-20
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;
class point{
public:
int x;
int y;
int z;
point();
};

point::point()
{
x=0;
y=0;
z=0;
}

int main ()
{
point sixteen[16];
for(int i=0;i<16;++i){
cin>>sixteen[i].x>>sixteen[i].y>>sixteen[i].z;
}
point temp;
while(cin>>temp.x&&temp.x!=-1){
cin>>temp.y>>temp.z;
int flag=-1;
int d=99999;
for(int i=0;i<16;++i){
int a=temp.x-sixteen[i].x;
int b=temp.y-sixteen[i].y;
int c=temp.z-sixteen[i].z;
if(d>a*a+b*b+c*c){
d=a*a+b*b+c*c;
flag=i;
}
}
cout<<"("<<temp.x<<","<<temp.y<<","<<temp.z<<") maps to ("<<sixteen[flag].x<<","<<sixteen[flag].y<<","<<sixteen[flag].z<<")"<<endl;
}
return 0;
}
projoy 2009-07-20
  • 打赏
  • 举报
回复
上代码
#include <iostream>
using namespace std;
class point{
public:
int x;
int y;
int z;
point();
};

point::point()
{
x=0;
y=0;
z=0;
}

int main ()
{
point sixteen[16];
for(int i=0;i<16;++i){
cin>>sixteen[i].x>>sixteen[i].y>>sixteen[i].z;
}
point temp;
while(cin>>temp.x&&temp.x!=-1){
cin>>temp.y>>temp.z;
int flag=-1;
int d=99999;
for(int i=0;i<16;++i){
int a=temp.x-sixteen[i].x;
int b=temp.y-sixteen[i].y;
int c=temp.z-sixteen[i].z;
if(d>a*a+b*b+c*c){
d=a*a+b*b+c*c;
flag=i;
}
}
cout<<"("<<temp.x<<","<<temp.y<<","<<temp.z<<") maps to ("<<sixteen[flag].x<<","<<sixteen[flag].y<<","<<sixteen[flag].z<<")"<<endl;
}
return 0;
}
kojie_chen 2009-07-20
  • 打赏
  • 举报
回复

#include<stdio.h>
void main()
{
long a[17][17],i,j,n,r,g,b,m,x,y,z;
for(i=0;i<16;i++)
scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
while(scanf("%d%d%d",&r,&g,&b)&&r>=0&&g>=0&&b>=0)
{
n=9999999;
for(i=0;i<16;i++)
{ m=(r-a[i][0])*(r-a[i][0])+(g-a[i][1])*(g-a[i][1])+(b-a[i][2])*(b-a[i][2]);
if(m<n)
{n=m;x=a[i][0];y=a[i][1];z=a[i][2];}
}
printf("(%d,%d,%d) maps to (%d,%d,%d)\n",r,g,b,x,y,z);
}
}

meipen 2009-07-20
  • 打赏
  • 举报
回复
算了,也不知道你这道题是干什么的,
总之你的要求输出
while(1)
{
min=1000;/*这个地方初始化一下就可以了*/
for(i=0;i <3;i++)
scanf("%d",&b[i]);
kojie_chen 2009-07-20
  • 打赏
  • 举报
回复
很久了,discuss里有啊,我的代码好像也是参照的,贴个出来看看吧
#include<stdio.h>
void main()
{
long a[17][17],i,j,n,r,g,b,m,x,y,z;
for(i=0;i<16;i++)
scanf("%d%d%d",&a[i][0],&a[i][1],&a[i][2]);
while(scanf("%d%d%d",&r,&g,&b)&&r>=0&&g>=0&&b>=0)
{
n=9999999;
for(i=0;i<16;i++)
{ m=(r-a[i][0])*(r-a[i][0])+(g-a[i][1])*(g-a[i][1])+(b-a[i][2])*(b-a[i][2]);
if(m<n)
{n=m;x=a[i][0];y=a[i][1];z=a[i][2];}
}
printf("(%d,%d,%d) maps to (%d,%d,%d)\n",r,g,b,x,y,z);
}
}
meipen 2009-07-20
  • 打赏
  • 举报
回复
算了,也不知道你这道题是干什么的,
总之你的要求输出
while(1)
{
min=1000;/*这个地方初始化一下就可以了*/
for(i=0;i <3;i++)
scanf("%d",&b[i]);
genguyige 2009-07-20
  • 打赏
  • 举报
回复
给出一个承诺长度为三的数组 然后与给出的前面的数组去比较 按照
e=(a[i][0]-b[0])*(a[i][0]-b[0])+(a[i][1]-b[1])*(a[i][1]-b[1])+(a[i][2]-b[2])*(a[i][2]-b[2]);
d=sqrt(e);
if(d <min)这个公式去比较大小 后面最小的就是我要求的
meipen 2009-07-20
  • 打赏
  • 举报
回复
这道题要实现什么
genguyige 2009-07-20
  • 打赏
  • 举报
回复
恩 是的 是北大POJ1046 拜托给我点思路
kojie_chen 2009-07-20
  • 打赏
  • 举报
回复
poj上的题目吧,好像以前做过
meipen 2009-07-20
  • 打赏
  • 举报
回复
这道题是做什么的?
genguyige 2009-07-20
  • 打赏
  • 举报
回复
但我的程序的答案不是那样的 而是
(0,0,0) maps to (0,0,0)
(255,255,255) maps to (0,0,0)
(253,254,255) maps to (0,0,0)
(77,79,134) maps to (0,0,0)
(81,218,0) maps to (0,0,0)
genguyige 2009-07-20
  • 打赏
  • 举报
回复
但我的程序的答案不是那样的 而是
(0,0,0) maps to (0,0,0)
(255,255,255) maps to (0,0,0)
(253,254,255) maps to (0,0,0)
(77,79,134) maps to (0,0,0)
(81,218,0) maps to (0,0,0)

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧