Найдите ошибку в программе 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.
Ошибка в программе 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.
Ошибка в программе 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.