主题:请教在Turbo pascal的一道题
今天在学习中有一道题:
(1)输入一个加法的式子,求它的结果。
输入样例 输出样例
5+85= 5+85=90
1258+65= 1258+65=1323
(2)判断输入的字符除了“+、-、*、/”、数字以及“=”以外,是否还有其它字符(如字母),如果有,则请求重新输入。
(1)这个不难,关键是把字符串中的数提取出来,然后相加就行。
但是(2)无论如何做都出现错误,想法是这样的:
假设将输入的字符变量是zf,flag是布尔类型变量,在提取的字符中判断其ASCII值是不是小于48或大于57,并且不等于61和42。当flag为真时就请求重新输入,当flag为假时就重复。
这一步的编程以下:
……(前面省略不写)
repeat
s:=length(sw);
flag:=true;
for j:=1 to s do
begin
ch1:=copy(sw,j,1);
od:=ord(ch1); [size=3] {就是这里老是出错,错误提示是:Error 39: Ordinal [/size]
[size=3] expression expected。意思好象是“缺有序表达式”。}[/size]
if (od<48 or od>57) and (od<>61) and (od<>42) then flag:=false;
end;
until flag;
……(省略不写)
请大家帮忙分析错误的原因,如何改正?
最好写一个完整的程序学习一下,谢谢。
(1)输入一个加法的式子,求它的结果。
输入样例 输出样例
5+85= 5+85=90
1258+65= 1258+65=1323
(2)判断输入的字符除了“+、-、*、/”、数字以及“=”以外,是否还有其它字符(如字母),如果有,则请求重新输入。
(1)这个不难,关键是把字符串中的数提取出来,然后相加就行。
但是(2)无论如何做都出现错误,想法是这样的:
假设将输入的字符变量是zf,flag是布尔类型变量,在提取的字符中判断其ASCII值是不是小于48或大于57,并且不等于61和42。当flag为真时就请求重新输入,当flag为假时就重复。
这一步的编程以下:
……(前面省略不写)
repeat
s:=length(sw);
flag:=true;
for j:=1 to s do
begin
ch1:=copy(sw,j,1);
od:=ord(ch1); [size=3] {就是这里老是出错,错误提示是:Error 39: Ordinal [/size]
[size=3] expression expected。意思好象是“缺有序表达式”。}[/size]
if (od<48 or od>57) and (od<>61) and (od<>42) then flag:=false;
end;
until flag;
……(省略不写)
请大家帮忙分析错误的原因,如何改正?
最好写一个完整的程序学习一下,谢谢。