| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3602 人关注过本帖
标题:删除数字问题(不会)
只看楼主 加入收藏
论坛
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1372
专家分:0
注 册:2006-3-27
收藏
得分:0 

错误程序,见笑了,删除

[此贴子已经被作者于2006-5-14 13:18:03编辑过]


日出东方,唯我不败! 做任何东西都是耐得住寂寞,任何一个行业要有十年以上的积累才能成为专家
2006-05-13 14:09
工藤♀新一
Rank: 1
等 级:新手上路
帖 子:140
专家分:0
注 册:2006-5-4
收藏
得分:0 
以下是引用soft_wind在2006-5-13 9:47:00的发言:
#include <stdio.h>
#define M 10
int main()
{
int m,n,i,j,counter=0;
char str[M];
char *p;
puts("enter the number:");
gets(str);
m=strlen(str);
puts("enter another number:");
do
{
scanf("%d",&n);
if(m<=n)
puts("wrong input! enter again!");
}while(m<=n);
p=str;
while(1)
{
for(i=0;p[i]!='\0';i++)
{
if(p[i]>p[i+1])
{ 只要前面的大于后面就把它删了好象不妥~这里有问题
for(j=i;j<m;j++)
p[j]=p[j+1];
counter++;
if(counter==n)
goto exit;
break;
}
}
}
exit:
puts(str);
getch();
}
如果上述的意思是对的,那么这个程序是你想要的.

检查到一个毛病,重新编辑了下.

这个程序有问题哦~比如我输入1986315 按LZ的意思应该输出131,但程序输出115~


很高兴能和大家一起学习程序! QQ:114109098
2006-05-13 14:20
xikang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-21
收藏
得分:0 

soft_wind :
确实是我没说清楚,就是要顺序不变,你的程序我刚才运行了一下,没有问题, 谢谢了!
还有 论坛 你编的程序我运行了几组数据,有的不能正确得到结果,不信你可以运行一下
621534
2
得到结果是1000,而并不是1534


2006-05-14 09:09
xikang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-21
收藏
得分:0 
还有luo113927,
你说的那个方法,我们班同学也有用的,我是这编了一下还是可以用的,不过那个方法应该属于动态规划,我想用贪心算法。不过还是谢谢你!

2006-05-14 09:11
xikang
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-4-21
收藏
得分:0 
soft_wind :
你能不能把你的程序再修改一下,顺便把0也考虑进去,就像我在一楼说的,比如563012 输入3,应该得到301,而不是012。谢谢了!!

2006-05-14 09:18
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
刚看到您上面的话,不好意思,
我得下了,还没吃饭,晚点我再想想,
明天如果再来上机的话,就改这个程序.
不过还不知道,能不能改成功,这我可不能打包票的.

对不礼貌的女生收钱......
2006-05-14 17:51
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
收藏
得分:0 
我现在没空,得抄论文.....不好意思,刚才聊天聊得久了些......
不过我大致说下思路,您看这样可不可以:
1.从输入的数中寻找0,如果没有,按原来的程序操作。
2.如果有,找到第一个0后,检测这个0后面还有几位,如果>=m-n-2(m,n所代表的意思和原来的相同),则0前面寻找最小的一位,0后面寻找m-n-2位(按原程序删除其他的位,这样包括前面一位和零以及后面这寻找的m-n-2就共有m-n位了),凑成字符串输出;
3.如果<=m-n-2位,不妨设为q位,则0前面保留m-n-q-1位(按原程序删除其他的位),连同0和0后面输出。

对不礼貌的女生收钱......
2006-05-15 17:29
qwsfwsxx
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-4-19
收藏
得分:0 
学习了一下
今天正在考虑这个问题,结果发现这里有大家在讨论,借鉴了一下大家的算法,写了一下C程序,望大家指教,我的邮箱:  qwsfws@ 欢迎大家交流!
#include "stdlib.h"
#include "stdio.h"
#include "string.h"

void del(char a[],int t)
{int k,z;
for (k=0;k<t;k++)
{if(z==t) break;
if(a[k]>a[k+1])
for (z=k;z<t;z++)
a[z]=a[z+1];}
}

main()
{long i,s,t;
char a[240];
gets(a);printf("\n");puts(a);
scanf("%d",&s);
t=strlen(a);
for(i=1;i<=s;i++,t--)
{del(a,t);puts(a);printf("\t这是第%d次!\n",i);}
 puts(a) ;
system("pause");
}
2008-04-19 02:06
雨中飛燕
Rank: 1
等 级:新手上路
帖 子:765
专家分:0
注 册:2007-10-13
收藏
得分:0 
直接贪心

" border="0" />
2008-04-19 02:11
快速回复:删除数字问题(不会)
数据加载中...
 
   



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

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