Найдите ошибку в программе Pascal
Задание: Дано:a,b,c,d.
Найти:среднее значение чисел принадлежащих интервалу(1;30) и кратных 3.
program zaschita;
var s,k,a,b,c,d:integer; sr:real;
begin
write ('a='); readln(a);
write ('b='); readln(b);
write ('c='); readln(c);
write ('d='); readln(d);
s:=0;
k:=0;
a:=1;
while (a<=30) do
begin
if (a mod 3=0) then
s:=s+a;
k:=k+1;
end;
b:=1;
while (b<=30) do
begin
if (b mod 3=0) then
s:=s+b;
k:=k+1;
end;
c:=1;
while (c<=30) do
begin
if (c mod 3=0) then
s:=s+c;
k:=k+1;
end;
d:=1;
while (d<=30) do
begin
if (d mod 3=0) then
s:=s+d;
k:=k+1;
end;
sr:=s/k;
writeln ('среднее значение=',sr);
end.

11 Окт 2019 в 20:42
191 +1
1
Ответы
1

Ошибка в программе Pascal заключается в том, что переменные a, b, c, d переопределяются внутри программы и теряют значения, которые пользователь вводит с клавиатуры. Нужно удалить строки a:=1;, b:=1;, c:=1;, d:=1;.

Правильный вариант программы:

program zaschita;
var s,k,a,b,c,d:integer; sr:real;
begin
write ('a='); readln(a);
write ('b='); readln(b);
write ('c='); readln(c);
write ('d='); readln(d);
s:=0;
k:=0;
if (a mod 3 = 0) and (a > 1) and (a < 30) then
begin
s:=s+a;
k:=k+1;
end;
if (b mod 3 = 0) and (b > 1) and (b < 30) then
begin
s:=s+b;
k:=k+1;
end;
if (c mod 3 = 0) and (c > 1) and (c < 30) then
begin
s:=s+c;
k:=k+1;
end;
if (d mod 3 = 0) and (d > 1) and (d < 30) then
begin
s:=s+d;
k:=k+1;
end;
sr:=s/k;
writeln ('среднее значение=',sr);
end.
19 Апр 2024 в 12:02
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир