Pascal,读取未知数量的整数
我的问题是如何读取用户在标准输入中输入的一些整数,并将它们放入数组中。但我不知道用户将输入多少个数字,我不能问他这个问题?用户在一行中输入数字。好的,根据评论,演示了三种方法:Pascal,读取未知数量的整数,pascal,freepascal,Pascal,Freepascal,我的问题是如何读取用户在标准输入中输入的一些整数,并将它们放入数组中。但我不知道用户将输入多少个数字,我不能问他这个问题?用户在一行中输入数字。好的,根据评论,演示了三种方法: program readmultiint; {$mode objfpc}{$H+} uses StrUtils; const CMaxValues = 3; var s: string; darr: array of Integer; sarr: array [0..CMa
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.
程序readmultiint;
{$mode objfpc}{$H+}
使用
支柱;
常数
Cmax值=3;
变量
s:字符串;
darr:整数数组;
sarr:整数的数组[0..CMaxValues-1];
i、 cnt:整数;
开始
//使用WordCount的动态数组
Writeln('输入值:');
Readln(s);
cnt:=字数(s,stdwordelims);
设置长度(darr,cnt);//为价值分配空间
对于i:=0到cnt-1 do
Val(提取字(i+1,s,stdwordelims),darr[i]);
因为我在黑暗中
书面(i);
//EOLN中的动态数组
设定长度(darr,0);
Writeln('输入值:');
虽然不是我做的
开始
设置长度(darr,长度(darr)+1);//展开数组以获取下一个值
读取(darr[高(darr)];
结束;
Readln;//自述
因为我在黑暗中
书面(i);
//静态阵列
cnt:=0;
Writeln('输入值:');
而(非eoln)和(cnt
请随意使用其中一个或提供您自己的:)
附:一些阅读资料:
好的,根据评论,演示了三种方法:
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.
程序readmultiint;
{$mode objfpc}{$H+}
使用
支柱;
常数
Cmax值=3;
变量
s:字符串;
darr:整数数组;
sarr:整数的数组[0..CMaxValues-1];
i、 cnt:整数;
开始
//使用WordCount的动态数组
Writeln('输入值:');
Readln(s);
cnt:=字数(s,stdwordelims);
设置长度(darr,cnt);//为价值分配空间
对于i:=0到cnt-1 do
Val(提取字(i+1,s,stdwordelims),darr[i]);
因为我在黑暗中
书面(i);
//EOLN中的动态数组
设定长度(darr,0);
Writeln('输入值:');
虽然不是我做的
开始
设置长度(darr,长度(darr)+1);//展开数组以获取下一个值
读取(darr[高(darr)];
结束;
Readln;//自述
因为我在黑暗中
书面(i);
//静态阵列
cnt:=0;
Writeln('输入值:');
而(非eoln)和(cnt
请随意使用其中一个或提供您自己的:)
附:一些阅读资料:
好的,我只想补充一个答案。感谢大家的帮助,这是根据建议编写的代码。我添加了一行代码,用于向后写入数组,只是为了让大家看到它读得很好
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.
好的,我只想补充一个答案。感谢大家的帮助,这是根据建议编写的代码。我添加了一行代码,用于向后写入数组,只是为了让你们看到它读得很好
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.
将用户输入读取为字符串,然后使用和函数获取值count和每个值。顺便说一句,这只是众多解决方案中的一个。谢谢你,但我想知道是否有更简单的方法,例如使用“whilenoteoln”循环?@潜伏者
whilenoteoln do begin Read(i);写(我,);结束
工作正常(i:Integer;
),但它在eoln
@Abelisto之前不允许有空格。谢谢你在我发表评论后想到了这一点。很好。将用户输入读取为字符串,然后使用和函数获取值count和每个值。顺便说一句,这只是众多解决方案中的一个。谢谢你,但我想知道是否有更简单的方法,例如使用“whilenoteoln”循环?@潜伏者whilenoteoln do begin Read(i);写(我,);结束
工作正常(i:Integer;
),但它在eoln
@Abelisto之前不允许有空格。谢谢你在我发表评论后想到了这一点。接得好。它很有创意:)祝你好运。它很有创意:)祝你好运。