我有一个问题。我只学了几个星期就学了帕斯卡,而且我知道的不多。我必须编写一个程序,该程序必须从3个输入的数字中计算出某些内容。问题是他们中的所有3个需要输入一个编辑,其间有空格。所以基本上我有一个字符串“号码号码”。我如何将这些数字分隔为3个独立的字符串,以便将它们转换为整数。分隔字符串中的数字。帕斯卡尔
回答
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变量。
谢谢,这有很多帮助。它是否也适用于数组? –
是:'输入Integer的TMyArr = array [0..2];过程GetNumbers(var arr:TMyArr);开始WriteLn('输入三个以空格分隔的数字,然后按Enter键'。 ReadLn(ARR [0],ARR [1],ARR [2]);结束;' –
如果有n个元素?像阵列[1..n],其中n可以高达100 000. –
使用复制功能是一种方法。对格式化抱歉,我无法理解如何在这些答案部分中正确粘贴代码片段。
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块来完成。
stackoverflow在线帮助解释了如何做适当的格式化 – lurker
- 1. 字符串数组在帕斯卡尔
- 2. 德尔福/帕斯卡尔字符串文字到C/C++
- 3. 帕斯卡尔分割线转化为现实和字符串
- 4. 检查输入字符 - 帕斯卡尔
- 5. 德尔福/帕斯卡尔解析字符串到一个ComboBox
- 6. 如何在等式中使用帕斯卡尔字符串
- 7. 帕斯卡尔字符串的使用(正确的Python例子)
- 8. 帕斯卡尔:反转字符串递归
- 9. 字符串到帕斯卡的整数转换,怎么做?
- 10. 链表帕斯卡尔
- 11. Exercice与帕斯卡尔
- 12. 算法smbPitchShift(帕斯卡尔)
- 13. 帕斯卡尔:如何比较大数字
- 14. 斯卡拉解析/分割字符串
- 15. 斯卡拉分割字符串元组
- 16. (C++)在由空格分隔的字符串中分隔数字
- 17. 将数字与由$符号分隔的字符串分隔吗?
- 18. C#帕尔斯HTML字符串标记文本
- 19. 帕斯卡尔布尔返回值?
- 20. 德尔福/帕斯卡尔例
- 21. 分隔字符串?
- 22. 分隔字符串
- 23. 斯卡拉字符串 - json
- 24. 斯卡拉:从字符串
- 25. 斯卡拉:字符串Chomp
- 26. 用“||”分隔字符串分隔符
- 27. 分隔字符串与分隔符
- 28. 分隔符分隔字符串RadTreeView VB.NET
- 29. 哈斯克尔[字符]以字节串
- 30. 修剪字符串中的字符数的分隔符之后
'程序GetNumbers(var x,y,z:Integer);开始WriteLn('输入三个以空格分隔的数字,然后按Enter键'。 ReadLn(X,Y,Z);结束;' –
@LURD我很乐意为你的解决方案提供紫外线,如果你把它做成适当的答案。目前唯一的答案并不是真正的问题答案,也过于复杂。 –
@TomBrunberg,谢谢你鼓励我一路回答:-) –