PASCAL问题求高手解答
http://www.dfstermole.net/Pascal/progproblems/pFileHaystackNumbered.html上面的地址是具体的要求这个...
http://www.dfstermole.net/Pascal/progproblems/pFileHaystackNumbered.html
上面的地址是具体的要求
这个问题需要读入一个文件,英文文件比如加拿大的国歌
然后在屏幕上会印出来文件所有的内容
并且每一行都会有一个数字标签
比如
1 O CANADA
2 OUR HOME AND NATIVE LAND
3
4 O CANADA
……
以此类推,就算中间是空行也会标上数字
然后让用户输入要查找的字母或者单词,比如O
然后这个程序就会告诉这个字母的坐标在哪,比如刚才的O就是第一行第三个单位和第四行第三个单位
大概就是这样一个PASCAL问题
一楼的偶试过了,不行啊,不是偶输入歌词,而是一开始就把歌词给在屏幕上印出来才行
而且也没有找字母或者单词的功能的说 展开
上面的地址是具体的要求
这个问题需要读入一个文件,英文文件比如加拿大的国歌
然后在屏幕上会印出来文件所有的内容
并且每一行都会有一个数字标签
比如
1 O CANADA
2 OUR HOME AND NATIVE LAND
3
4 O CANADA
……
以此类推,就算中间是空行也会标上数字
然后让用户输入要查找的字母或者单词,比如O
然后这个程序就会告诉这个字母的坐标在哪,比如刚才的O就是第一行第三个单位和第四行第三个单位
大概就是这样一个PASCAL问题
一楼的偶试过了,不行啊,不是偶输入歌词,而是一开始就把歌词给在屏幕上印出来才行
而且也没有找字母或者单词的功能的说 展开
3个回答
展开全部
哎呀,弄出来了,这个不仅能找字母,还能找单词,看看我的成果吧:
Program aa;
type
a=record ‘用个集合就爽一点儿了’
beg:integer; ‘开始行数’
con:string[100]; ‘歌词’
end;
var
f:text;
i:integer;
j:integer;
rd:string;
find:integer;
s:array[1..200]of a;
begin
writeln('a new begin');
assign(f,'d:\123.txt');‘自己改啦,歌词文件位置’
reset(f);
i:=1;‘行数计数器’
while not eof(f) do
while not eoln(f) do begin
readln(f,s[i].con);‘读歌词’
s[i].beg:=i; ‘给行数’
writeln(s[i].beg,' ',s[i].con);‘打出带行数的歌词’
i:=i+1;‘计数器加一’
end;
close(f);
write('Now please input the word you want to search:');
readln(rd);
for j:=1 to i-1 do begin‘i-1是因为最后多加了一,然而并没有这个元素,故减一’
find:=pos(rd,s[j].con);‘这个很重要,关键’
if find>0 then writeln('position code:',s[j].beg,' ',find);‘找到这个字母就打出位置’
end;
end.
试过了,可行的,哈哈,楼主给分哪~~
Program aa;
type
a=record ‘用个集合就爽一点儿了’
beg:integer; ‘开始行数’
con:string[100]; ‘歌词’
end;
var
f:text;
i:integer;
j:integer;
rd:string;
find:integer;
s:array[1..200]of a;
begin
writeln('a new begin');
assign(f,'d:\123.txt');‘自己改啦,歌词文件位置’
reset(f);
i:=1;‘行数计数器’
while not eof(f) do
while not eoln(f) do begin
readln(f,s[i].con);‘读歌词’
s[i].beg:=i; ‘给行数’
writeln(s[i].beg,' ',s[i].con);‘打出带行数的歌词’
i:=i+1;‘计数器加一’
end;
close(f);
write('Now please input the word you want to search:');
readln(rd);
for j:=1 to i-1 do begin‘i-1是因为最后多加了一,然而并没有这个元素,故减一’
find:=pos(rd,s[j].con);‘这个很重要,关键’
if find>0 then writeln('position code:',s[j].beg,' ',find);‘找到这个字母就打出位置’
end;
end.
试过了,可行的,哈哈,楼主给分哪~~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
歌词用
Var s:string;i:integer;
...
Assign(input,'*:\**\***.txt');
Reset(input);
i:=0;
While not eof(input) Do
Begin
Readln(S);
Inc(i);
Write(i,s);
End;
坐标不太清楚,用pos应该可以吧...
Var s:string;i:integer;
...
Assign(input,'*:\**\***.txt');
Reset(input);
i:=0;
While not eof(input) Do
Begin
Readln(S);
Inc(i);
Write(i,s);
End;
坐标不太清楚,用pos应该可以吧...
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var
strlist:TStringList;
i,p:integer;
begin
strlist:=TStringList.create;
strlist.loadfromfile('111.txt');
for i := 0 to strlist.Count - 1 do
begin
strlist[i]:=inttostr(i)+' '+strlist[i];//添加序号
end;
p:=0;
for i := 0 to strlist.Count - 1 do
begin
p:=pos('O',strlist[i]);//'O'是你要查的字符串,这里你可以自己处理成先定义个变量接收要查的字符串之类的,我就不管了哈。
if p<>0 then // 找到了
begin
//.....打印结果,i是行号,p是位置,你自己弄吧。
end;
end;
strlist.free;
end;
strlist:TStringList;
i,p:integer;
begin
strlist:=TStringList.create;
strlist.loadfromfile('111.txt');
for i := 0 to strlist.Count - 1 do
begin
strlist[i]:=inttostr(i)+' '+strlist[i];//添加序号
end;
p:=0;
for i := 0 to strlist.Count - 1 do
begin
p:=pos('O',strlist[i]);//'O'是你要查的字符串,这里你可以自己处理成先定义个变量接收要查的字符串之类的,我就不管了哈。
if p<>0 then // 找到了
begin
//.....打印结果,i是行号,p是位置,你自己弄吧。
end;
end;
strlist.free;
end;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询