
Подскажите, где ошибка: program mas2; const n=5; type mas=array[1..n]of real; var sr,sum:real;
i:integer; x:mas; procedure vvod_rand(var A:mas; n: integer); var i:integer; begin for i:=1 to n do begin a[i]:=random(-10,30); write(a[i],' '); end; writeln; end; var a:mas; function sred(var x:mas; s:real):real; var i:integer; begin s:=0; for i:=1 to n do s:=x[i]+s; s:=s/5; sred:=s end; function summa(var x:mas; su:real):real; var i:integer; begin su:=0; for i:=1 to n do su:=su+x[i]; writeln('sum=',sum); end; begin vvod_rand(a,n); writeln('sum=',summa(sum,a)); writeln('sred=',sred(a,sr)); end. Написал на PascalABC.NET Заранее спасибо.

Ответы на вопрос

const
n=5;
type
mas=array[1..n]of real;
var
sr,sum:real;
i:integer;
x:mas;
procedure vvod_rand(var A:mas; n: integer);
var
i:integer;
begin
for i:=1 to n do
begin
a[i]:=random(-10,30);
write(a[i],' ');
end;
writeln;
end;
function sred(var x:mas):real;
var
i:integer;
s:real;
begin
s:=0;
for i:=1 to n do s:=x[i]+s;
s:=s/5;
sred:=s
end;
function summa(var x:mas):real;
var
i:integer;
su:real;
begin
su:=0;
for i:=1 to n do su:=su+x[i];
summa:=su;
end;
var a:mas;
begin
vvod_rand(a,n);
writeln('sum=',summa(a));
writeln('sred=',sred(a));
end.



function summa(var x: mas; su: real): real;
var
i: integer;
begin
su := 0;
for i := 1 to n do
su := su + x[i];
summa:=su;
writeln('sum=', su);
end;



В данном коде есть несколько ошибок. Вот их список:
В процедуре
vvod_rand
вы используете параметрA
в нижнем регистре, а в цикле записи значения вы используете переменнуюa
с заглавной буквы. Правильно будет использовать один и тот же регистр для обеих переменных. Рекомендуется использоватьA
вместоa
в процедуре и в основной программе.В функции
summa
вы не возвращаете значение типаreal
, хотя объявили, что функция должна вернутьreal
. Необходимо добавить операторsumma := su
передwriteln('sum=',sum)
.В основной программе вы передаете
sum
как параметр в функциюsumma
, хотяsum
объявлена как переменная типаreal
. Вместо этого вы должны передаватьa
в качестве параметра функцииsumma
. То есть строкуwriteln('sum=',summa(sum,a));
нужно заменить наwriteln('sum=',summa(a,sum));
.В основной программе вы передаете
sr
как параметр в функциюsred
, хотяsr
объявлена как переменная типаreal
. Вместо этого вы должны передаватьa
в качестве параметра функцииsred
. То есть строкуwriteln('sred=',sred(a,sr));
нужно заменить наwriteln('sred=',sred(a,sr));
.В процедуре
vvod_rand
вы объявляете переменнуюi
, хотя она уже объявлена в основной программе. Необходимо удалить объявление переменнойi
в процедуреvvod_rand
.
После внесения этих исправлений ваш код будет выглядеть следующим образом:
pascalprogram mas2; const n = 5; type mas = array[1..n] of real; var sr, sum: real; i: integer; x: mas; procedure vvod_rand(var A: mas; n: integer); begin for i := 1 to n do begin A[i] := random(-10, 30); write(A[i], ' '); end; writeln; end; var a: mas; function sred(var x: mas; s: real): real; var i: integer; begin s := 0; for i := 1 to n do s := x[i] + s; s := s / n; sred := s; end; function summa(var x: mas; su: real): real; var i: integer; begin su := 0; for i := 1 to n do su := su + x[i]; summa := su; end; begin vvod_rand(a, n); writeln('sum=', summa(a, sum)); writeln('


Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili