while n <= m do n := 1;
while n > m do n := 0;
write(n);
Если n <= m, то n = 1,
если n > m, то n = 0 (любое число)
При этом условные операторы использованы не будут.
Есть вариант попроще: write(ord(n <= m))
Если n <= m, то будет выведено 1 (порядковый номер true), иначе будет выведено 0 (порядковый номер false)
Ответ:
Суть программы следующая: у нас есть массив Dat, состоящий из 10 элементов. Значения каждого элемента нам уже известно, ведь их ввели прямо в коде программы. И так, цикл for k:=1 to 10 do проверяет, больше ли текущий элемент массива, чем 12, если да, то переменная m увеличивается на 1
От Dat[1] до Dat[10] больше 12 всего 7 элементов. Значит на экран выведется 7.
Ответ: 7.
Объяснение:
№4const nx=30;var i,n,m,max,k,el,Sum,Sumnh:integer;C:Array[1..nx]of integer;Sr:real;BeginRead(n);for i:=1 to n do beginC[i]:= random(200)-100; write(C[i]:4);if C[i]>0 then begin Sum := Sum + C[i];k:= k+1;end;if C[i]< 0 then m:= m+1;end;Sr:= Sum/k;writeln;writeln('среднеарифметическое положительных элементов ',Sr:6:4);write('Количес. отриц. элементов ',m:4);end.№5const nx=30;var i,n,m,max,k,el,Sum,Sumnh:integer;C:Array[1..nx]of integer;Sr:real;BeginRead(n);for i:=1 to n do beginC[i]:= random(125)-75; write(C[i]:4);if C[i]>0 then begin Sum := Sum + C[i];k:= k+1;end;if C[i]< 0 then m:= m+1;end;Sr:= Sum/k;writeln;writeln('среднеарифметическое положительных элементов ',Sr:6:4);write('Количес. отриц. элементов ',m:4);end.
Var
n: integer;
s, x, xn, y: double;
begin
s := 0; x := 0.1; xn := x;
for n := 1 to 20 do
begin
s := s + n * (n + 2) * xn;
xn := xn * x
end;
y := x * (3 + x) / (1 - x);
Writeln('Сумма (x=0.1, n=20)=', s, ', по формуле=', y );
s := 0; x := 0.5; xn := x;
for n := 1 to 15 do
begin
s := s + n * (n + 2) * xn;
xn := xn * x
end;
y := x * (3 + x) / (1 - x);
Writeln('Сумма (x=0.5, n=15)=', s, ', по формуле=', y );
end.
Тестовое решение:
Сумма (x=0.1, n=20)=0.397805212620028, по формуле=0.344444444444445
Сумма (x=0.5, n=15)=9.99008178710938, по формуле=3.5
Как видно, если в первом случае формула еще дает какое-то приближение, то во втором она совершенно не годится.
Блок-схема, реализующая алгоритм, приведена в приложении. Она не копирует программу, а лишь поясняет алгоритм, который в программе использован дважды для разных данных. Конечно, правильнее было воспользоваться функциями и тогда программа выглядела бы так:
function f1(x: double; k: integer): double;
var
s, xn: double;
n: integer;
begin
s := 0; xn := x;
for n := 1 to k do begin s := s + n * (n + 2) * xn; xn := xn * x end;
f1 := s
end;
function f2(x: double): double;
begin
f2 := x * (3 + x) / (1 - x);
end;
begin
Writeln('Сумма (x=0.1, n=20)=', f1(0.1, 20), ', по формуле=', f2(0.1));
Writeln('Сумма (x=0.5, n=15)=', f1(0.5, 15), ', по формуле=', f2(0.5));
end.