菜鸟pascal 输入输出问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 17:22:03
最近在做关于pascal的编程题,但是被程序的输入输出部分搞疯掉了。。。
题目要求第一行输入一个数字,
第二行输入两个以上数字,用空格分开
第三行以后每行输入一个数字+一个字母+一个数字
到第N行停止
这个read之类的应该怎么写啊

遇到输入中空格和回车之类的就头痛,高手帮忙讲解下,本菜鸟谢过了(读入了随便怎么存储都无所谓)

第一行第二行没什么好说的:readln(a);readln(b,c);
第三行后的每一行处理方式都一样的:
一个数字+一个字母 +一个数字
先读3个字符
readln(ch1,ch2,ch3);
x:=ord(ch1)-ord('0');
y:=ord(ch2)-ord('0');
这样要读的 一个数字+一个字母 +一个数字 就是 x ch2 y

如果不是一个数字 而是一个 整数 那么处理起来就有点点麻烦,用字符串读一行,然后对字符串处理,下面给段代码:
readln(s);
i:=1;
while s[i] in ['0'..'9'] do inc(i);
//循环结束 i 将指着那一个字母所在的位置
s1:=copy(s,1,i-1); //1至i-1位置为第一个数,把它copy出来,然后用val转换成整数
val(s1,x); // x即为第一个数
s2:=copy(s,i+1,length(s)-i);//i+1至最后为第二个数,copy出来 然后转换成整数
val(s2,y);
到这里就把整数+字符+整数读出来了 分别是
x s[i] y

var a:numtype;
i:numtype;
b,c,e:array[] of numtype;
ch:char;
d:array[] of char;
第一行
readln(a);

第二行
i:=0;
repeat
inc(i);
read(b[i]);
until eoln;

第三行到最后
i:=0;
repeat
inc(i);
j:=0;
repeat
inc(j);
read(ch);
case j of
1:c[i]:=ord(c