2011-01-07 110 views
0

我想了解帕斯卡尔实验室考试特别程序之前,这些代码请解释这些Pascal代码..?

PROGRAM vowels; 

USES crt; 

{Program that counts the number of vowels in a sentence} 

CONST space=' '; 
     maxchar=80; 

TYPE vowel=(a,e,i,o,u); 

VAR buffer:ARRAY[1..maxchar] of char; 
    vowelcount:ARRAY[vowel] of integer; 

PROCEDURE initialize; 

VAR ch:vowel; 

BEGIN 
    FOR ch:=a TO u DO 
    BEGIN 
      vowelcount[ch]:=0; 
    END; 
END; 

PROCEDURE textinput; 

VAR index:integer; 

BEGIN 
    writeln('Input a sentence'); 
    FOR index:=1 TO maxchar DO 
     IF eoln THEN buffer[index]:=space 
     ELSE read(buffer[index]); 
     readln; 
END; 

PROCEDURE analysis; 

VAR index:integer; 
    ch:vowel; 

BEGIN 
    index:=1; 
    WHILE index<>maxchar+1 DO 
    BEGIN 
      IF buffer[index] IN ['a','e','i','o','u'] THEN 
      BEGIN 
       CASE buffer[index] OF 
       'a':ch:=a; 
       'e':ch:=e; 
       'i':ch:=i; 
       'o':ch:=o; 
       'u':ch:=u; 
       END; 
       vowelcount[ch]:=vowelcount[ch]+1; 
      END; 
      index:=index+1; 
    END; 
END; 

PROCEDURE vowelout; 

VAR ch:vowel; 

BEGIN 
    clrscr; 
    writeln; 
    writeln(' a e i o u'); 
    FOR ch:=a TO u DO 
    write(vowelcount[ch]:4); 
    writeln; 
END; 

BEGIN 
    initialize; 
    textinput; 
    analysis; 
    vowelout; 
END. 

请帮我

+0

你知道吗? – Orbling 2011-01-07 02:04:46

+2

它计数在韵味 – Jason 2011-01-07 02:12:02

回答

10

总评:好吧,这代码计数输入字符串提供元音数量。

让我们开始....

TYPE元音=(A,E,I,O,U); VAR 缓冲区:char的ARRAY [1..maxchar]; vowelcount:整数的ARRAY [元音];

此代码定义了英文(a,e,i,o,u)中的元音列表。

PROCEDURE initialize; VAR ch:元音; 开始为ch:=一个你做开始 vowelcount [ch]:= 0;结束;结束;

然后它定义了一个变量来收集每个元音的数量,称为vowelcount。该变量是一个数组,看起来有点像这样:

vowelcount[a]=0; 
vowelcount[e]=0; 
vowelcount[i]=0; #... etc 

然后定义过程“分析”。这将从屏幕输入(将在程序中稍后调用)并逐步输入输入中的每个字母。

WHILE指数<> maxchar + 1 DO BEGIN IF 缓冲液[指数]在[ 'A', 'E', 'I', '0', 'U'] THEN BEGIN CASE缓冲液[指数] 'a':ch:= a; 'e' 的CH:= E;的 'i':CH:= I; 'o':ch:= o; 'U':CH:= U;结束;

如果这些字母中的任何一个碰巧在字母列表中,而不是匹配元音,那么它会在上面的vowelcount数组中添加一个数字。 (vowelcount [ch]:= vowelcount [ch] +1)其中ch是匹配的字母。正如你所看到的,这只有在它是一个有效的元音(IF缓冲[索引] IN ['a','e','i','o','u'])时才会被触发)

最后。该程序的主要代码或实际运行的内容:

BEGIN clrscr; writeln; writeln('a e i o u'); FOR ch:= a TO u DO write(vowelcount [ch]:4); writeln;结束;

BEGIN初始化;的TextInput;分析; vowelout;结束。

这基本上是将应用程序串在一起,首先清除屏幕(在dos提示符下),然后将元音输出到屏幕上。然后它添加一些格式并输出当前的vowelcount数(如上)。 然后它会请求你的输入,最后它会再次输出vowelcount的内容,它已经用你输入的vowelcounts进行了更新。