【问题标题】:Pascal insert user input to an arrayPascal 将用户输入插入到数组中
【发布时间】:2011-09-26 09:45:39
【问题描述】:

我正在努力在函数式编程方面做得更好。作为开始,我计划尝试几种语言,如 Pascal、Scheme、ML 等。首先我从 Pascal 开始。我正在尝试将用户输入插入到 pascal 中的整数数组中,然后将它们反转。

  1 program ReverseList;
  2 
  3 var
  4         i: Integer;
  5         k: Integer;
  6         a: array[1..100] of Integer;
  7 begin   
  8         i := 0;
  9         repeat  
 10                 writeln('Enter a number');
 11                 readln(k);
 12                 if k > -1 then 
 13                         i := i + 1;
 14                         a[i] := k;
 15         until(k < 0);
 16         for i := 1 to i do    
 17                 writeln(a[i]);
 18 end.

过去我主要是一名 Java 开发人员,所以我习惯于使用所有可用的列表。理想情况下,我想知道是否可以构建一个列表,在该列表中我可以根据该列表中的元素数量迭代该列表。

如果有人能指出函数式编程中好的教程的方向以及上述编程语言的语法,那就太好了。

【问题讨论】:

  • 也许你先接受一些有帮助的答案!!!
  • 很高兴知道不知道这是一个关键因素,我会牢记这一点。谢谢。
  • 我已经使用 cmets 给予积分并口头感谢,但没有意识到接受。
  • @evilone,这不是重点。我同意向帮助过你的人表扬是公平的,但你仍然没有义务这样做。
  • @Null-Hypothesis,如果您想从其他人那里得到更多答案,最好不要回答(并接受)您自己的问题。如果您有正确的解决方案并且您不想要更多答案,您可以自己提供答案。

标签: arrays pascal


【解决方案1】:

你的程序有几个问题:

  • 数组未初始化。
  • 没有输入检查,i=0 和 i>100 都会导致非法数组索引。
  • 数组索引和值是一样的,对吗?
  • 您只写了前 10 个数字(但您使用了不同的索引,这肯定超出了范围)。
  • 输出不反向。

还有几个pascal tutorials

顺便说一句,Pascal 不是函数式语言。所以如果你真的想学习一门函数式语言,你最好尝试另一种(比如 Lisp、Ml 或者可能是 F#)。

【讨论】:

  • 在您发表评论后,我实际上更新了问题的代码部分。现在我有一个列表打印和反向工作。非常感谢。
  • Gamecat:他说学习函数式编程,而不是学习函数语言:-)
【解决方案2】:

这是一个很好的做法,我设法为此找到了解决方案。我确信有更好的方法可以做,而且这看起来不像我正在使用函数式编程的功能。但是如果有人想提供更好的解决方案,请这样做,

{author: Null-Hypothesis}

program ReverseList;

var
        i: Integer; {integer to keep the array length}
        k: Integer; {user input value}
        a: array[1..100] of Integer; {array to store the user inputs}
begin
        i := 0;
        repeat  {iterate until user input is negative or number of inputs exceed array size}

                writeln('Enter a number or enter negative value to exit the program.');
                readln(k);
                if(k > -1) and (i < 100) then   {check for negative value and size of the array}
                begin
                        i := i + 1;     {increase array index}
                        a[i] := k       {assign value to array}
                end
                else
                        break;  {exit if array size exceed the limit of array}
        until(k < 0);
writeln;

{Printing the user input before the reversing the list}
writeln('Original order of the list');
for i := 1 to i do
        writeln(a[i]);
writeln;

{Printing the reverse list}
writeln('Reversed List');
for i := i downto 1 do  {decrement array index}
        writeln(a[i]);
writeln('Bye!!!');
end.

愉快的编码,开始下一种语言...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-13
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2019-01-19
    • 1970-01-01
    相关资源
    最近更新 更多