回 帖 发 新 帖 刷新版面

主题:请高手帮帮忙

txt file内有一篇英文文章
我要先把文章读进 然后再做一些分析(如字数,段落)
请问应该怎样read file ,再将文章的文字读读进array ??
thank you!

回复列表 (共8个回复)

沙发

program dfd(input,output,f)
var a:array[1.1000] of char;
    f:text;ch:char;i:integer;
begin
assign(f,'titel.txt');
reset(f);i:=0;
while not eof(f) do
  begin
     if not eoln(f) then begin read(f,ch);inc(i);a[i]:=ch;end else 
     readln(f);
   end;
 end.

板凳

再有一个问题请教~~
如果上面的array 存了\"this is a word.\"
应该怎样去数这里有4 个英文字?
和个别英文字母在array内出现的次数?
(例如t出现了一次, i出现了两次..等等)

我还是pascal新手呀~~请帮帮忙吧!!

3 楼

直接枚举

建议你把你的pascal教程看完后再来问问题

4 楼

我就是怎么想也不懂 再在这里发问
我是自学的 教程内都没有这些实例...
要是麻烦了你 对不起

5 楼

5.1 For语句 

1.递增型FOR循环。  

FOR 循环控制变量:=循环初值 TO 循环终值 DO 循环的语句(或语段)
例: FOR I:=5 TO 10 DO WRITELN (I); 
输出的结果为: 5 6 7 8 9 10 即循环一共执行了6次 
如果要重复多个语句,一定要用BEGIN-END形式: 
例:
FOR I:=1 TO 10 DO 
BEGIN 
WRITELN (I); 
WRITELN (10-I); 
END; 
2.递减型FOR循环  

FOR 循环控制变量:=循环初值 DOWNTO 循环终值 DO 循环语句 
递减型FOR循环与递增型FOR循环基本相同,只是循环控制变量每次递减。 
3.FOR循环的几点注意内容: 
(1)循环控制变量必须是顺序类型的变量。所谓顺序类型的变量,就是指整型,字符型,枚举型,子界型,不允许是实型。 
(2)不允许在循环体内再对循环控制变量赋值。
例如:
A:=10;B:=50; 
FOR K:=A TO B DO 
BEGIN 
K:=K+1;{这一句是错误的!!!!!!!!}
WRITELN (K); 
END; 
(3)当循环初值或循环终值中包含变量时,允许在循环体内改变这些变量的值,但并不改变原定的循环次数。
例:
A:=1;B:=10; 
FOR I:=A TO B DO 
BEGIN 
A:=5;B:=4;
END; 
在上面例子中,A,B的值在循环的内部发生了变化,但并不影响循环的次数,依然是10次。 
4.多重循环 循环体由PASCAL语句构成,当然也可以包含FOR语句,这就构成了循环的嵌套,形成多重循环。
例如,以下FOR循环输出5行,每行输出10个星号(*) 
FOR i:=1 to 5 DO
BEGIN 
FOR j:=1 TO 10 DO
Write('*');
END; 
初学者应当特别注意,内层的循环变量不能和外层的循环变量相同。也就是说,嵌套的各层循环应当使用不同的变量作为循环变量。
5.2 While语句 

 1.WHILE循环的执行形式 WHILE 布尔表达式 DO 语句
     例如:
     k:=10;
     WHILE k>0 DO
     BEGIN
          Writeln (k);
          k:=k-1
     END;
     其中
     (1)WHIlE 和DO是PASCAL保留关键字,是WHILE循环语句的组成部分。
     (2)保留关键字DO后面的“语法”只能是一条语句,称为“循环体”;如果循环 体中需要包含多个语句则应该如上例所示,采用一条复合语句。  

2.WHILE循环的执行功能      当执行到WHILE语句时
     (1)求出布尔表达式的值
     (2)若布尔表达式的值为真,则执行循环体内的语句;若为“假”,执行步骤4
     (3)重复步骤1和2
     (4)循环结束,执行循环后面的语句。
5.3 Repeat-Until语句 

1.REPEAT-UNTIL类型的循环的执行形式 
REPEAT 
语句1 
语句2
…… 
语句n
UNTIL 布尔表达式 
例如:以下循环求n=1+2+3+……+100 
n:=0;t:=i; 
REPEAT 
n:=n+t; t:=t+1; 
UNTIL t>100;
其中
(1)REPEAT和UNTIL是PASCAL保留关键字。
(2)在REPEAT和UNTIL之间的语句构成循环。在它们之间可以有任意多个语句,这一点和FOR,WHILE循环不同,FOR,WHILE循环体在语法上只允许一条语句。
2.REPEAT-UNTIL循环的执行功能 
(1)遇到REPEAT语句后,即进入循环体,顺序执行循环体内的语句。
(2)遇到UNTIL语句后,求布尔表达式的值。若值为假,则返回步骤1;若为“真”,执行步骤3 
(3)循环结束,执行UNTIL后面的下一条语句。

6 楼

关于字符串:
6.3 字符串 

1.    字符串用于存放整批的字符数据。通常编程中使用字符串存放字符化了的数字数据。如高精度运算时存放操作数和运算结果。字符串可以看作是特殊的字符串数组来处理。当然,它也有自已的特点。下面是字符串定义的格式:
var
s:string; s1:string[15];
字符串定义时,如不指定长度,则按该类型的最大长度(255个字符)分配空间,使用时最大可用长度为255个;如果在中括号中给出一个具体的值(1—255之间),则按这个值的大小分配空间。使用时,最大的可用长度即为该值。

2.字符串的输入、输出:
字符串类型既可按数组方式输入、输出,也可直接输入、输出:readln(s);writeln(s);多个字符串输入时以回车作为数据间的分隔符;每个readln语句只能读入一个字符串。 

3.有关字符串的操作:
操作  类型  作用  返回值  例子  
length(s) 函数  求字符串s的长度 整型 s:='123456789';
l:=length(s);{l的值为9} 
copy(s,w,k) 函数  复制s中从w开始的k位 字符串 s:='123456789';
s1:=copy(s,3,5);{s1的值是'34567'} 
val(s,k,code) 过程  将字符串s转为数值,存在k中;code是错误代码   var s:string;k,code:integer;
begin
s:='1234';
val(s,k,code);
write(k);{k=1234}
 
str(i,s) 过程  将数值i转为字符串s   i:=1234;
str(i,s);
write(s);{s='1234'} 
Delete(s,w,k) 过程  在s中删除从第w位开始的k个字符   s := 'Honest Abe Lincoln';
Delete(s,8,4);
Writeln(s); { 'Honest Lincoln' } 
Insert(s1, S, w) 过程  将s1插到s中第w位   S := 'Honest Lincoln';
Insert('Abe ', S, 8); { 'Honest Abe Lincoln' } 
Pos(c, S) 函数  求字符c在s中的位置 整型 S := ' 123.5';
i :=Pos(' ', S);{i的值为1} 
+ 运算符  将两个字符串连接起来   s1:='1234';
s2:='5678';
s:=s1+s2;{'12345678'} 

7 楼

1.文本文件的定义:
   文本文件不是简单地由某类型的元素序列所组成,它的基本元素是字符,由它们构成行,若干行组成一份原文。由于各行的长度可以不同,所以文本文件只能顺序地处理。文本文件的定义如下:
    var
     fp:text;
2.文本文件的读操作:
   (1)调用assign过程,把磁盘文件赋予文本文件变量;
      assign(fp,filename);
   (2)调用reset过程,为读操作做准备;
      reset(fp);
   (3)在需要读数据的位置调用read过程或readln过程。
      readln(fp,var1,var2,...,varn);
3.文本文件的写操作:
   (1)调用assign过程,把磁盘文件赋予文本文件变量;
      assign(fp,filename);
   (2)调用rewrite过程,为读操作做准备;
      rewrite(fp);
   (3)在需要读数据的位置调用write过程或writeln过程。
      writeln(fp,var1,var2,...,varn);
4.文本文件的关闭操作:
   close(fp);
5.文本文件的其他操作:
   (1)EOF(fp)—布尔函数,用于判断文件结束否。
   (2)EOLN(fp)—布尔函数,用于判断行结束否。

8 楼

需要的资料已经在这里了

我来回复

您尚未登录,请登录后再回复。点此登录或注册