Arrays Pascal将用户输入插入数组

Arrays Pascal将用户输入插入数组,arrays,pascal,Arrays,Pascal,我正在努力提高函数式编程的水平。作为一个开始,我计划尝试使用两种语言,如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

我正在努力提高函数式编程的水平。作为一个开始,我计划尝试使用两种语言,如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.
1程序反向列表;
2.
3变量
4i:整数;
5k:整数;
6a:整数的数组[1..100];
7开始
8i:=0;
9重复
10 writeln(“输入一个数字”);
11 readln(k);
12如果k>-1,则
13i:=i+1;
14a[i]:=k;
15至(k<0);
16对于i:=1到i do
17书面(a[i]);
18结束。
过去我主要是一名java开发人员,所以我习惯于使用所有可用的列表。理想情况下,我还想知道是否可以构建一个列表,在该列表中,我可以根据列表中的元素数量对列表进行迭代


如果有人能为我介绍函数式编程的优秀教程以及上述编程语言的语法,那就太好了。

您的程序有几个问题:

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


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

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

{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.
{作者:无效假设}
程序反向列表;
变量
i:整数;{保持数组长度的整数}
k:整数;{用户输入值}
a:整数的数组[1..100];{存储用户输入的数组}
开始
i:=0;
重复{迭代,直到用户输入为负数或输入数超过数组大小}
writeln('输入一个数字或输入负值以退出程序');
readln(k);
如果(k>-1)和(i<100),则{检查数组的负值和大小}
开始
i:=i+1;{增加数组索引}
a[i]:=k{给数组赋值}
结束
其他的
打破{如果数组大小超过数组的限制,则退出}
直至(k<0);
书面语;
{在反转列表之前打印用户输入}
writeln(“列表的原始顺序”);
对于i:=1到i
书面(a[i]);
书面语;
{打印反向列表}
writeln(“反向列表”);
对于i:=i向下至1 do{递减数组索引}
书面(a[i]);
写下(“再见!!!”);
结束。

快乐的编码,开始下一种语言…

也许你会先接受一些有用的答案!!!很高兴知道我不知道这是一个关键因素,我会记住这一点。谢谢。我已经给出了分数,并通过评论口头感谢,但没有意识到接受。@evione,这不是重点。我同意对帮助过你的人给予表扬是公平的,但是,你仍然不需要这样做。@Null假设,如果你想从其他人那里得到更多的答案,最好不要回答(并接受)你自己的问题。如果你有正确的解决方案,你不需要更多的答案,你可以自己提供答案。事实上,我在你的评论之后更新了问题的代码部分。现在,我有一个列表打印和工作的反向。非常感谢。Gamecat:他说学习函数式编程,而不是函数式语言:-)