pascal中的多索引数组

pascal中的多索引数组,pascal,Pascal,我在定义多维方面有问题 函数ToUpper和ToLower将大写字母转换为小写字母 此代码的主要功能是计算每个字符在输入中出现的次数。只有字母a-z和数字0-9 VAR c: char; Counts: Array['0'..'9','a'..'z'] of Integer; i : Integer; Begin For c := 'a' to 'z' do Counts[c] := 0; For c := '0' to '9' do

我在定义多维方面有问题

函数
ToUpper
ToLower
将大写字母转换为小写字母

此代码的主要功能是计算每个字符在输入中出现的次数。只有字母a-z和数字0-9

VAR
    c: char;
    Counts: Array['0'..'9','a'..'z'] of Integer;
    i : Integer;
Begin
    For c := 'a' to 'z' do
        Counts[c] := 0;
    For c := '0' to '9' do 
        Counts[c] := 0;
    While not EOF do
    Begin
        Read(c);
        c := ToLower(c);
        If ( c >= 'a' ) and ( c <= 'z' ) then 
            Counts[c] := Counts[c] + 1;
        if ( c >= '0' ) and ( c <= '9' ) then
            Counts[c] := Counts[c] + 1;
    end;
    For c := 'a' to 'z' do 
        If Counts[c] <> 0 then
            WriteLn(c,Counts[c]);
end.
VAR
c:半焦;
计数:整数的数组['0'..'9','a'..'z'];
i:整数;
开始
对于c:='a'到'z'做
计数[c]:=0;
对于c:=“0”到“9”do
计数[c]:=0;
而不是EOF做什么
开始
读(c);
c:=ToLower(c);

如果(c>='a')和(c='0')以及(c如果您声明
计数:整数的数组['0'..'9','a'..'z'];
您声明的数组包含260个元素。 pascal中的多索引数组是多维数组,这意味着一个2D矩阵,显然这不是您需要的。 不能声明具有多个索引的一维数组,因此必须将计数器拆分为两个数组。一个用于计数,另一个用于字母

守则如下:

var 
  c: char;
  numbers: Array ['0'..'9'] of Integer;
  letters: Array ['a'..'z'] of Integer;
  i : Integer; 

Begin 
  For c := 'a' to 'z' do
    letters[c] := 0;
  For c := '0' to '9' do
    numbers[c] := 0;
  While (not EOF(file)) do 
  Begin
    Read(c);
    c := ToLower(c);
    If ( c >= 'a' ) and ( c <= 'z' ) then 
      letters[c] := letters[c] + 1;
    if ( c >= '0' ) and ( c <= '9' ) then
      numbers[c] := numbers[c] + 1;
  end;
  For c := 'a' to 'z' do 
  begin
    If (letters[c] <> 0) then
      WriteLn(c,Counts[c]);
  end;
  For c := '0' to '9' do 
  begin
    If (letters[c] <> 0) then
      WriteLn(c,letters[c]);
  end;
end.
var
c:半焦;
数字:整数的数组['0'..'9'];
字母:整数的数组['a'..'z'];
i:整数;
开始
对于c:='a'到'z'做
字母[c]:=0;
对于c:=“0”到“9”do
数字[c]:=0;
而(不是EOF(文件))做什么
开始
读(c);
c:=ToLower(c);
如果(c>='a')和(c='0')和(c