Pascal,读取未知数量的整数

时间:2016-02-09 18:09:34

标签: pascal freepascal

我的问题是如何阅读用户在标准输入上输入的一些整数,并将它们放在数组中。但是,我不知道用户将输入多少个数字,我不能问他?用户在一行中输入数字。

2 个答案:

答案 0 :(得分:2)

好的我还有一个我想补充的答案。感谢所有人的帮助,这是根据建议编写的代码。我添加了一行向后写入数组,只是因为你可以看到它已经很好了。

program backo;
 var niz:array [1..100] of integer;
  n,  i:integer;

begin
i:=1;
    writeln('enter elements of array');
    read(niz[i]);
    while not eoln do
            begin
                    i:=i+1;
                    read(niz[i]);
            end;
    for n:=i downto 1 do
    writeln(niz[n]);
end.

答案 1 :(得分:1)

好的,基于评论,有三种方式证明:

program readmultiint;

{$mode objfpc}{$H+}

uses
    StrUtils;

const
    CMaxValues = 3;

var
    s: string;
    darr: array of Integer;
    sarr: array [0..CMaxValues-1] of Integer;
    i, cnt: Integer;
begin
    // Dynamic array using WordCount
    Writeln('Enter values:');
    Readln(s);
    cnt := WordCount(s, StdWordDelims);
    SetLength(darr, cnt); // Allocate room for values
    for i := 0 to cnt - 1 do
        Val(ExtractWord(i + 1, s, StdWordDelims), darr[i]);

    for i in darr do
        Writeln(i);

    // Dynamic array usin EOLN

    SetLength(darr, 0);
    Writeln('Enter values:');
    while not eoln do
    begin
        SetLength(darr, Length(darr) + 1); // Expand array for next value
        Read(darr[High(darr)]);
    end;
    Readln; // Read <Enter> itself

    for i in darr do
        Writeln(i);

    // Static array

    cnt := 0;
    Writeln('Enter values:');
    while (not eoln) and (cnt < CMaxValues) do // Reads not more then CMaxValues values
    begin
        Read(sarr[cnt]);
        Inc(cnt);
    end;
    Readln; // Read <Enter> itself

    for i := 0 to cnt-1 do
        Writeln(sarr[i]);
end.

随意使用其中一个或提供您自己的:)

PS:一些读物:

Dynamic arrays

Val procedure

for-in loop