2017-02-18 76 views
-1

我有一个问题。我只学了几个星期就学了帕斯卡,而且我知道的不多。我必须编写一个程序,该程序必须从3个输入的数字中计算出某些内容。问题是他们中的所有3个需要输入一个编辑,其间有空格。所以基本上我有一个字符串“号码号码”。我如何将这些数字分隔为3个独立的字符串,以便将它们转换为整数。分隔字符串中的数字。帕斯卡尔

+3

'程序GetNumbers(var x,y,z:Integer);开始WriteLn('输入三个以空格分隔的数字,然后按Enter键'。 ReadLn(X,Y,Z);结束;' –

+0

@LURD我很乐意为你的解决方案提供紫外线,如果你把它做成适当的答案。目前唯一的答案并不是真正的问题答案,也过于复杂。 –

+0

@TomBrunberg,谢谢你鼓励我一路回答:-) –

回答

1

Pascal中有内置的程序,以获取从控制台输入。

获得数字输入的最简单的方法是使用Read()/ReadLn(),这也可以从字符串转换为数值:

procedure GetNumbers(var x,y,z: Integer); 
begin 
    WriteLn('Enter three numbers separated with space and then press enter.'); 
    ReadLn(x,y,z); 
end; 

这里,ReadLn()检测用空格分隔的三个输入,等待[Enter]键,并将整数值分配给x,y,z变量。

+0

谢谢,这有很多帮助。它是否也适用于数组? –

+0

是:'输入Integer的TMyArr = array [0..2];过程GetNumbers(var arr:TMyArr);开始WriteLn('输入三个以空格分隔的数字,然后按Enter键'。 ReadLn(ARR [0],ARR [1],ARR [2]);结束;' –

+0

如果有n个元素?像阵列[1..n],其中n可以高达100 000. –

0

使用复制功能是一种方法。对格式化抱歉,我无法理解如何在这些答案部分中正确粘贴代码片段。

function TMyForm.Add(anEdit : TEdit) : integer; 
var 
    Idx : integer; 
    TempString : string; 

function GetNext : integer; 
begin 
    result := result + StrToInt(copy(TempString, 1, Idx - 1)); 
    TempString := copy(TempString, Idx + 1, MAXINT); 
end; 

begin 
    result := 0; 
    TempString := anEdit.Text; 

    repeat 
     Idx := pos(' ', TempString); 
     if Idx > 0 then 
     result := GetNext; 
    until Idx = 0; 

    if trim(TempString) <> '' then 
     //this is the last piece of it then 
     result := result + StrToInt(trim(TempString)); 
end; 

您还需要注意输入的值是数字而不是字母,通常使用try..except块来完成。

+1

stackoverflow在线帮助解释了如何做适当的格式化 – lurker