| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1264 人关注过本帖
标题:[求助]程序输不出结果
只看楼主 加入收藏
yuyunliuhen
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:1435
专家分:0
注 册:2005-12-12
收藏
得分:0 

哎~~


Go confidently in the  directions of your dreams,live the life you have imagined!Just do it!
It is no use learning without thinking!
2006-12-12 21:38
yqfang310
Rank: 2
等 级:新手上路
威 望:4
帖 子:458
专家分:0
注 册:2006-10-10
收藏
得分:0 
以下是引用yuyunliuhen在2006-12-12 21:38:48的发言:

哎~~

楼上为何??


JAVA是什么?我也不清楚......
2006-12-13 02:27
smartwind
Rank: 1
等 级:新手上路
威 望:1
帖 子:277
专家分:0
注 册:2006-11-13
收藏
得分:0 

把那四个判断改成3元运算符的形式会好很多
还有就是上面的判断条件最好改下,具体如下:
p.x=p1.x>p2.x?p1.x:p2.x;
p.y=p1.y<p2.y?p1.y:p2.y;

if(high-low<=1)


2006-12-15 11:23
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
收藏
得分:0 

下面这样就可以了,你只是数据疏忽了3个地方


#include<iostream>
using namespace std;
struct point //定义一个结构体用来存放x,y
{
int x;
int y;
};
point MinMax(int A[], int low, int high) //寻找最大和最小元素
{
point p,p1,p2;
if(high==low)
{
p.x=p.y=high;
return p;
}
else if((high -low) == 1)
{
if(A[high] > A[low])
{
p.x = A[low];
p.y = A[high];
return p;
}
else
{
p.x = A[high];
p.y = A[low];
return p;
}
}
else
{
int mid = (high + low)/2; //0-1;2-2;3-4;5-6;7-7;8-9
p1 = MinMax(A, low, mid);//递归调用
p2 = MinMax(A, mid+1, high);
if(p1.x >= p2.x)
{
p.x = p2.x;
}
if(p1.x < p2.x)
{
p.x = p1.x;
}
if(p1.y >= p2.y)
{
p.y = p1.y;
}
if(p1.y < p2.y)
{
p.y = p2.y;
}
return p;
}
}

int main()
{
point p3;//定义一个point类型的变量,用于接收返回值
int a[10]={1,23,24,1,6,23,34,2,54,6};
p3 = MinMax(a,0,9);
cout<<p3.x<<\" \"<<p3.y<<endl;
return 0;
}


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-12-15 12:37
myisgood
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2006-12-25
收藏
得分:0 
楼主: 我就不知道 你编程的风格这么乱~~
要是在我门公司
老板 早就 抄了你~
递归 是这么用的么
你去把 数据结果在好好看三遍~~~
2006-12-27 12:44
hitlfy
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-9-8
收藏
得分:0 
我认为最基本的high-low=1就不对,这样mid会出现负数,一直减下去永远也不会有结果
/*请问大狭这个程序为什么在Turbo C2.0上编译通不过,而在VC++6.0就能通过*/
/*另外我还想问问如何在VC++6.0下对程序单步运行,以及查看每一不运行的结果以便查错*/
#include <stdio.h>
struct point
{
int x;
int y;
};
point MinMax(int A[],int low,int high)/*请问为什么显示语法错误Declaration syntax error*/
{
point p,p1,p2;
int mid;
if((high -low) == 1)
{
if(A[high] > A[low])
{
p.x = A[low];
p.y = A[high];
return p;
}
else
{
p.x = A[high];
p.y = A[low];
return p;
}
}
else
{
mid = (high - low)/2;
p1 = MinMax(A, low, mid);/*会永远减下去*//*mid=1,0,-1,-1,...*/
p2 = MinMax(A, mid+1, high);
if(p1.x > p2.x)
{
p.x = p2.x;
}
if(p1.x < p2.x)
{
p.x = p1.x;
}
if(p1.y > p2.y)
{
p.y = p1.y;
}
if(p1.y < p2.y)
{
p.y = p2.y;
}
return p;
}
}
main()
{
point p3;
int a[10]={1,23,24,1,6,23,34,2,54,6};
p3 = MinMax(a,2,5);/*实参给定2,5*/
printf("%d\n",p3.x);
printf("%d\n",p3.y);
}
2006-12-27 18:21
hitlfy
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-9-8
收藏
得分:0 
我认为最基本的high-low=1就不对,这样mid会出现负数,一直减下去永远也不会有结果
/*请问大狭这个程序为什么在Turbo C2.0上编译通不过,而在VC++6.0就能通过*/
/*另外我还想问问如何在VC++6.0下对程序单步运行,以及查看每一不运行的结果以便查错*/
#include <stdio.h>
struct point
{
int x;
int y;
};
point MinMax(int A[],int low,int high)/*请问为什么显示语法错误Declaration syntax error*/
{
point p,p1,p2;
int mid;
if((high -low) == 1)
{
if(A[high] > A[low])
{
p.x = A[low];
p.y = A[high];
return p;
}
else
{
p.x = A[high];
p.y = A[low];
return p;
}
}
else
{
mid = (high - low)/2;
p1 = MinMax(A, low, mid);/*会永远减下去*//*mid=1,0,-1,-1,...*/
p2 = MinMax(A, mid+1, high);
if(p1.x > p2.x)
{
p.x = p2.x;
}
if(p1.x < p2.x)
{
p.x = p1.x;
}
if(p1.y > p2.y)
{
p.y = p1.y;
}
if(p1.y < p2.y)
{
p.y = p2.y;
}
return p;
}
}
main()
{
point p3;
int a[10]={1,23,24,1,6,23,34,2,54,6};
p3 = MinMax(a,2,5);/*实参给定2,5*/
printf("%d\n",p3.x);
printf("%d\n",p3.y);
}
2006-12-27 18:22
快速回复:[求助]程序输不出结果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018108 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved