| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1600 人关注过本帖
标题:[求助]进来关注一下这个小游戏程序,找出问题~
只看楼主 加入收藏
oggplay
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-7-1
收藏
 问题点数:0 回复次数:14 
[求助]进来关注一下这个小游戏程序,找出问题~

功能实现:任意给定5个数字,其中必定存在3个数字已经有序(或者升序,或者降序),找出这5个数字中最长的升序或降序序列。
例如:1,7,5,3,9。则{1,7,9},{1,5,9},{1,3,9}都是最长的升序序列;
而{7,5,3}是最长的降序序列。
再如:1,3,2,5,7。最长的升序序列为{1,3,5,7}和{1,2,5,7}。

自动生成各种可能的序列,对于5个数字所有可能的序列为:
{0,1,2,3}、{0,1,2,4}、{0,1,3,4}、{0,2,3,4}、{1,2,3,4}
{0,1,2}、{0,1,3}、{0,2,3}、{1,2,3}
{0,1,4}、{0,2,4}、{1,2,4}
{1,3,4}
{2,3,4}、{0,3,4}
考察各种可能的序列是否升序或是降序,若是则打印;




《《有什么错误纠正一下,调试其正确,能不能把BOOL函数用语句什么的替代了啊 ,我们没学过这个函数。
using namespace std; 能不能删掉啊?大家多帮帮忙——把它搞正确了,感激 不尽》》



#include <iostream>
using namespace std;

//判断序列是不是升序排列
bool is_up_ordered(int a, int b, int c, int d = -1, int e = -1){
if (e == -1)
return (a<b && b<c && c<d && d<e);
else if (d == -1)
return (a<b && b<c && c<d);
else
return (a<b && b<c);
}

//判断序列是不是降序排列
bool is_down_ordered(int a, int b, int c, int d = -1, int e = -1){
if (e == -1)
return (a>b && b>c && c>d && d>e);
else if (d == -1)
return (a>b && b>c && c>d);
else
return (a>b && b>c);
}

int main(){
int a[5];
int mark = 0;
//从终端输入5个数字
cin >> a[0] >> a[1] >> a[2] >> a[3] >> a[4];

//下面是找出升序序列
cout << "升序排序:" << "\n";

if (is_up_ordered(a[0], a[1], a[2], a[3], a[4])){
cout << a[0] << a[1] << a[2] << a[3] << a[4] << "\n";
}
else {
for (int i = 0; i < 5; ++i)
for (int j = i+1; j < 5; ++j)
for (int k = j+1;k < 5;++k)
for (int l = k+1;l < 5;++l){
if (is_up_ordered(a[i],a[j],a[k],a[l])){
cout << a[i] << a[j] << a[k] << a[l] << "\n";
mark = 1;
}
}
}
if (mark != 1){
for (int i = 0;i < 5;++i)
for (int j = i+1;j < 5;++j)
for (int k = j+1;k < 5;++k){
if (is_up_ordered(a[i],a[j],a[k]))
cout << a[i] << a[j] << a[k] << "\n";
}
}

mark = 0;
//下面是找出降序序列
cout << "降序排序:" << "\n";

if (is_down_ordered(a[0], a[1], a[2], a[3], a[4]){
cout << a[0] << a[1] << a[2] << a[3] << a[4] << "\n";
}
else {
for (int i = 0; i < 5; ++i)
for (int j = i+1; j < 5; ++j)
for (int k = j+1;k < 5;++k)
for (int l = k+1;l < 5;++l){
if (is_down_ordered(a[i],a[j],a[k],a[l])){
cout << a[i] << a[j] << a[k] << a[l] << "\n";
mark = 1;
}
}
}
if (mark != 1){
for (int i = 0;i < 5;++i)
for (int j = i+1;j < 5;++j)
for (int k = j+1;k < 5;++k){
if (is_down_ordered(a[i],a[j],a[k]))
cout << a[i] << a[j] << a[k] << "\n";
}
}
system("pause");
}

[此贴子已经被作者于2007-7-1 14:33:36编辑过]

搜索更多相关主题的帖子: 序列 小游戏 数字 
2007-07-01 10:36
oggplay
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-7-1
收藏
得分:0 
回复:(oggplay)XDJM看一下这个小游戏程序,有什么错...

小弟我条件有限,只是也 有限,而且现在没有VC++6.0的软件
高手们帮忙看下吧

2007-07-01 12:20
oggplay
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-7-1
收藏
得分:0 
版主来指点一下啊~
2007-07-01 14:34
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
你的问题是什么?
你编译下看有什么错误。

Fight  to win  or  die...
2007-07-01 14:51
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
http://bbs.bc-cn.net/viewthread.php?tid=150319

你把简单问题复杂化了,参考下上面这个帖子。

Fight  to win  or  die...
2007-07-01 15:01
oggplay
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-7-1
收藏
得分:0 
回复:(aipb2007)http://bbs.bc-cn.net/dispbbs.asp...

问题 是总 有 一处错误/找不到

版主 的 写的那个第二段 是实现的 升序 ?还是降序?还是什么
能不 能说明白点,我在线等

2007-07-01 15:24
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
我写那个是有序!

你可以把那个函数改为两个,升和降,然后判断的位置都不变。

你的代码我看了下,思路基本上对,但是有错误,太复杂。
你完全可以把3个和4个的情况放到一起考虑,就像我那里那样。

Fight  to win  or  die...
2007-07-01 15:46
oggplay
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-7-1
收藏
得分:0 
回复:(aipb2007)我写那个是有序!你可以把那个函数...
晕了,版主帮我写出来吧,我听你的 不是 很懂,3.4合一?
特别是 降序, 我非常搞不定 。你把 整个你的方法的 写出来,我来 研究一下
特别 是 降序,我向 看看你写的套路
谢了,我在线等~
2007-07-01 16:30
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
[CODE]#include <iostream>
using namespace std;
bool is_ordered(int a,int b,int c,int d = 0){
if (d)
return (a>b && b>c && c>d) || (a<b && b<c && c<d);
else
return (a>b && b>c) || (a<b && b<c);
}

bool is_increase(int a,int b,int c,int d = 0){
if (d)
return a<b && b<c && c<d;
else
return a<b && b<c;
}

bool is_decrease(int a,int b,int c,int d = 0){
if (d)
return a>b && b>c && c>d;
else
return a>b && b>c;
}

int main(){
int a[] = {1,4,3,2,5};

for (int i = 0;i < 5;++i)
for (int j = i+1;j < 5;++j)
for (int k = j+1;k < 5;++k){
if (is_increase(a[i],a[j],a[k]))
cout << "升序" << a[i] << a[j] << a[k] << "\n";
if (is_decrease(a[i],a[j],a[k]))
cout << "降序" << a[i] << a[j] << a[k] << "\n";
for (int l = k+1;l < 5;++l){
if (is_increase(a[i],a[j],a[k],a[l]))
cout << "升序" << a[i] << a[j] << a[k] << a[l] << "\n";
if (is_decrease(a[i],a[j],a[k],a[l]))
cout << "降序" << a[i] << a[j] << a[k] << a[l] << "\n";
}
}
system("pause");
}[/CODE]

自己理解下,不要光copy!
GOOD LUCK

Fight  to win  or  die...
2007-07-01 17:04
oggplay
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2007-7-1
收藏
得分:0 
回复:(aipb2007)[CODE]#include u...
谢谢斑竹了,你 这个比我那个简单 太 多啊,呵呵,不可思议啊
那个bool函数可以用普通语句替代吗,我们设计要求里不 能 用BOOL
2007-07-01 17:13
快速回复:[求助]进来关注一下这个小游戏程序,找出问题~
数据加载中...
 
   



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

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