pascal语言 求帮看一下错误在哪

从键盘输入的 5 个正整数的数组。 用户输入一个字符。 如果用户输入字符“G”或“g”,则查找数组中最大的元素并显示该元素的索引。 如果用户输入字符“R”或“r”,则将数组的元素从大到小排序。 如果用户输入字符“E”或“e”,则求数组元素乘积的平方根。 

 

 

label MK1;

const N=5;

var

    sw:char;

    arr:array[1..N] of integer;

    i, j: byte;

    min, min_index: integer;

    sum:integer;

procedure swap(var a, b: integer);

var tmp:integer;

begin

    tmp := a;

    a:=b;

    b:=tmp;

end;

begin

randomize;

for i:=1 to N do

begin

  write('输入', i, '数组的第一个元素: ');

  readln(arr[i]);

  //arr[i]:=random(1,10);

end;

writeln(arr);

MK1:

writeln;

writeln('处理数组');

writeln('如果用户输入字符“G”或“g”,则查找数组中最大的元素并显示该元素的索引。');

writeln('如果用户输入字符“R”或“r”,则将数组元素从大到小排序。');

writeln('如果用户输入字符“E”或“e”,则求数组元素乘积的平方根。');

writeln;

write('输入一个字符: ');

readln(sw);

case uppercase(sw) of

'G':

      begin

        max:=arr[N];

        max_index:=N;

        for i:=1 to N-1 do

          if max > arr[i] then

            begin

              max:=arr[i];

              max_index:=i;

            end;

        writeln(max, ' 指数 ', max_index);

      end;

'R':

      begin

        for i:= 1 to N do

        for j:=1 to N-i do

        begin

            if arr[j] < arr[j+1] then swap(arr[j], arr[j+1]);

        end;

        writeln(arr);

      end;

‘E':

      begin

        for j:=1 to N do pro

        sqrt

        sqrt(j:real):real

        writeln(j);

      end;

   else //上面没有列出的所有其他情况

   begin

     writeln('错误!输入的字符无效!');

     goto MK1;

      end;       

参考GPT和自己的思路:

在代码中有几个语法错误需要进行修正:

  1. 在第7行,声明了一个min变量,但后面没有使用,可以删除。

  2. 在第20行,写成了pro,应该改为sqrt。

  3. 在第32行,字符‘E’的单引号应该使用英文单引号或双引号。

  4. 在第35行,应该是writeln(sqrt(sum)),而不是writeln(j)。

修正后的代码如下:

label MK1;

const N=5;

var sw:char;

arr:array[1..N] of integer;

i, j: byte;

max, max_index: integer;

sum:integer;

procedure swap(var a, b: integer);

var tmp:integer;

begin

tmp := a;

a:=b;

b:=tmp;

end;

begin

randomize;

for i:=1 to N do

begin

    write('输入', i, '数组的第一个元素: ');

    readln(arr[i]);

    //arr[i]:=random(1,10);

end;

writeln(arr);

MK1:

writeln;

writeln('处理数组');

writeln('如果用户输入字符“G”或“g”,则查找数组中最大的元素并显示该元素的索引。');

writeln('如果用户输入字符“R”或“r”,则将数组元素从大到小排序。');

writeln('如果用户输入字符“E”或“e”,则求数组元素乘积的平方根。');

writeln;

write('输入一个字符: ');

readln(sw);

case uppercase(sw) of

    'G':

    begin

        max:=arr[1];

        max_index:=1;

        for i:=2 to N do

            if max < arr[i] then

            begin

                max:=arr[i];

                max_index:=i;

            end;

        writeln(max, ' 指数 ', max_index);

    end;

    'R':

    begin

        for i:= 1 to N-1 do

            for j:=1 to N-i do

                if arr[j] < arr[j+1] then

                    swap(arr[j], arr[j+1]);

        writeln(arr);

    end;

    'E':

    begin

        sum := 1;

        for i:=1 to N do

            sum := sum * arr[i];

        writeln(sqrt(sum));

    end;

    else //上面没有列出的所有其他情况

    begin

        writeln('错误!输入的字符无效!');

        goto MK1;

    end;             

end;

end.