2016-04-24 67 views
-2

目标是在整数列表中查找最大值。Pascal练习未解决

program findMaximum(input,output); 

var 
number: integer; Maximum: integer; 

begin  
    writeln('Insert any number except of 0. 0 finishes your input.'); 

     if eof then  
     writeln('No input!') 
    else 
    begin   
     read(number);  
     Maximum:= number;  
     while not eof do  
     begin  
      if number>Maximum then  
      read(number); 
      Maximum := number 
     end; 
    if number<0 then 
     read(number);  
     Maximum:= 0;  
    writeln ('The highest number is 0.') 
end. 

目标是找到最大值,而0关闭序列并且不包含在输入中。另外,用户不输入任何东西都需要计入。任何人都可以提供帮助吗?

+0

请学会在这里发帖时正确格式化你的代码。将其粘贴,全部高亮(选择),然后单击工具栏上的“{}”按钮或工具栏上的Ctrl + K。如果您需要格式化内容方面的帮助,请单击要输入问题的文本区域右上角的小“?”。 –

+0

另外,你还没有解释你使用你发布的代码时遇到的问题,而且你还没有提出有关该代码的**特定问题**。 *任何人都可以提供帮助?*不是特定的(或者甚至是有意义的)问题。 –

+0

你应该解释你的问题显示的代码有什么问题(除了隐含的_It不工作(如预期)_。 – rpy

回答

0

一般建议:

你一定要重新阅读的复合语句if..then..else的语法。您的代码可能并非如您所期望的如果陈述比较号码
然后,请拿纸笔和运行代码手动(以执行该程序的计算机的一部分),想着在一份声明中的作用,并写下所涉及的变量的任何值,然后怎么回事到下一个陈述,直到你到达最后的结局。这会让您更好地了解代码的功能。要分析您的代码的特定不当行为,您可能需要使用调试器进行学习。

具体到你的代码:

在给定的代码中的任何负数是输入最高将重置为0 。这可能是最大值缺失初始化的结果,因为您似乎试图确保最大值不会作为负值返回?

此外,您缺少您所述的终止条件(输入将结束程序)。

有了这些方面的固定代码如下:

program findMaximum(input,output); 

var 
number: integer; Maximum: integer; 
readOn: boolean; 

begin  
    Maximum:=0; 
    readOn := true; 
    writeln('Insert any number except of 0. 0 finishes your input.'); 

    if eof then  
     writeln('No input!') 
    else 
    begin   
     read(number);  
     Maximum:= number;  
     while readOn and not eof do 
     begin  
      if number = 0 then 
       readOn := false 
      else 
      begin 
       if number>Maximum then 
        Maximum := number; 
       read(number); 
      end; 
     end; 
     writeln ('The highest number is ',Maximum,'.'); 
    end 
end. 

但是,你将不能正确EOF时,输入时是发生处理此案。 (而不仅仅是要读值时,第一事件)考虑到这个账户也

,你可能最终使用的东西一起:

program findMaximum(input,output); 

var 
number: integer; Maximum: integer; 
readOn: boolean; 
valuesSeen: boolean; 

begin  
    Maximum:=0; 
    readOn := true; 
    valuesSeen := false; 
    writeln('Insert any number except of 0. 0 finishes your input.'); 

    read(number); 
    while readOn and not eof do 
    begin 
     if not eof then 
     begin 
      if number = 0 then 
       readOn := false 
      else 
      begin 
       valuesSeen := true; 
       if number>Maximum then 
        Maximum := number; 
       read(number); 
      end 
     end 
    end; 
    if valuesSeen then 
     writeln ('The highest number is ',Maximum,'.') 
    else 
     writeln('No input!') 
    end 
end.