给定一个单词或一组字符,如何在 Pascal 中只取一部分并处理其余部分

问题描述 投票:0回答:1

我有基本的 Python 知识,目前使用 Pascal,我必须完成大学课程(编程入门课程)的任务。 我们不允许使用 Free Pascal 中的某些关键字,例如 string、break 和其他一些关键字,因此我的字符 var 是 char

基本上,我需要从一个单词(或一组字符)中取出每个字母并执行某些操作(在这种情况下,将 ASCCI 值添加到每次添加字母时都会增加的数字)

当我们找到第一个“.”时,我无法停止 while 循环。理想情况下,如果用户输入“house.dog”。我需要花一些时间来完成字母 h 、 o 、 u 、 s 和 e (第一个“.”之前的字母)的工作,并处理“.”之后的其余文本。因为不会被使用

我读到 Read 和 ReadLn 之间存在一些内部差异,但无法弄清楚这是否会影响代码和我得到的错误

谢谢

我尝试了下面的代码,并且在输入单词后没有停止。继续让我添加单词,直到出现运行时错误

program testingw;
var 
myText : char;
myResult : Integer;

begin
writeLn ('enter your text');
readLn (myText);

while myText <> '.' do
    begin
        Read(myText);
        if myText <> '.' then
            begin
            myResult := myResult * 125 + ord(myText);
            WriteLn (myText);
            end;
end; { while }
end.
pascal freepascal
1个回答
0
投票

首先对变量命名进行评论:名为

myText
的 var 给我提供了至少几个句子的文本图像。似乎不太适合仅仅一个角色。
myChar
对于角色来说是合乎逻辑的选择。

您需要知道

Read()
ReadLn()
之间的区别。文档中解释了详细信息,本质上
Read
从输入缓冲区读取一个字符,而
ReadLn
从输入缓冲区读取所有字符,直到看到 CR(回车)组合(字符 13 + 字符 10)。

如果您需要在第一个点 (.) 字符处停止处理输入字符,那么您需要正确决定要使用哪个字符。

您选择使用

while
循环是合理的,因为这使您可以在执行计算之前检查终止情况。

您应该对每个字符进行的唯一处理是与点进行比较,如果没有,则进行数学计算并输出字符。

您需要再次检查

Write
WriteLn

之间的区别
© www.soinside.com 2019 - 2024. All rights reserved.