一个关于turbo pascal7。0的调试问题 (300分)

  • 主题发起人 主题发起人 杏花春雨江南
  • 开始时间 开始时间

杏花春雨江南

Unregistered / Unconfirmed
GUEST, unregistred user!
请问: 1、turbo pascal所需要的环境是什么?
p3 800,256msdram 还不行么?
2、我作了一个约瑟夫环的问题?
n只猴子,从1开始数,数到第m个猴子,便踢出去,接着往后数,只到剩下最后一只
猴子,问剩下的猴子的编号是几?
compile和run都无事,但为什么输入数据后便死机,无论是win98还是纯dos都是此情况
我认为是我没有设置config.sys的原因,不知道是不是,请高手指点!!!
源码如下:
program monkey (input,output);
const
n=30;
var
mon:array[1..n] of integer;
a,b,i,m:integer;
begin
writeln('Please enter the number');
read(m);
for i:=1 to n do
mon:=1;
a:=0
//a是用来记录序号的
for i:=1 to n-1 do
begin
b:=0
//b是用来记录猴子数的
while b<m do
begin
a:=a+1;
if a>n then a:=a-n;
if mon[a]<>0 then b:=b+1;
end;
mon[a]:=0
end;
for i:=1 to n do
if mon<>0
then writeln(i);
end.

 
是不是有死循环?
 
你分析一下程序!!
 
算法不对呀
 
还有,你直接放到DELPHI里做不是一样,把所有的结果放到一个
TMemo里就OK吗
 
你的算法有点莫名其妙,太乱了。硬件配置足够了,我在486DXII80 16M内存下还用过TP7
 
你的代码我没有细看,但至少
while b<m do
begin
a:=a+1;
if a>n then
a:=a-n;
if mon[a]<>0 then//因为mon数组没有初始化,所以Mon[]的值为0
b:=b+1;//所以这句没执行,则在此循环中b<m永远为True,造成了死循环
end;
 

read(m)
之后 加上
for i:=1 to n do
mon:=1;
现在已经差不多了,但是在纯dos下还是过不去呀!!
 
tp用286、386都没问题,更何况你的p3?
肯定还是有死循环。
其实在Delphi下用是一样的,只要新建一个console程序就行了。
而且就算用tp也最好用tp6,因为tp7好像bug比较多。
 
不过看上去你的程序应该是正确了,而且我在2000下运行起来也没什么问题,想来dos下运行也不会有什么问题吧。
 
在我这里编译通过了
 
1,30
2,29
3,29
4,6
5,3
6,4
7,23
8,1
9,21
10,28
11,28
12,4
13,24
14,26
15,4
...
 
在问一下,pascal中可以几层嵌套递归呀!!!
 
提醒先:
在奔腾机器上用tp7先打补丁。他的crt单元有问题。其实这个补丁也不好使。我也不知道怎么解决!
你知道的话告诉我一声啊!
 
我记的好象是7层
 
请结束或提前您的帖子,谢谢合作!
 
程序不错
 
递归调用受内存好像还有堆栈限制,以前我用递归把扩展内存都用完了
嵌套定义函数才只有几层或十几层
 
我过去用Turbo Pascal7
现在还用?是不是难以理解?
建议直接用Delphi7.0吧,问题少一些.
 
把你的M都换成N
然后去掉const
就行了
否则你的算法就有问题
 
后退
顶部