Чтобы не загромождать программу, предполагаем без поверки, что x2>x1 и dx>0. Либо, x2<x1 и dx<0. В любых иных вариантах программа зациклится.
В приведенной программе описана функция для подвопроса а); прочие варианты закомментированы. Для получения других вариантов достаточно закомментировать строку y:=2*x; и снять комментарий с нужной строки.
function f(x:real):real; begin f:=2*x; { f:=x/3+9; f:=x-4; f:=x/8-6; } end;
var x,x1,x2,dx,y:real; begin Writeln('Введите начальное значение, шаг табуляции, конечное значение'); Read(x1,dx,x2); x:=x1; repeat y:=f(x); Writeln('x=',x,', y=',y); x:=x+dx until x>x2+dx/2 { +dx/2 - это защита от накопления погрешности } end.
Сомневающиеся в пользе "довеска" dx/2 в последней формуле, могут попробовать выполнить этот же контрольный пример, изменив предпоследнюю строку на более привычное until x>x2. И убедиться, что решение для х=3.3 пропадет.
1)Если n всегда равно 100
var x: array [1..100] of real;
k,n:integer;
M,d: real;
begin
n:=100;
writeln('введите Xk');
for k:=1 to n do readln(x[k]);
for k:=1 to n do m:=m+x[k];
m:=m/n;
for k:=1 to n do d:=(x[k]-m)*(x[k]-m);
d:=sqrt(d/(n-1));
writeln('M=',m,' ','d=',d);
end.
2)При любых n>1
var x: array [1..100] of real;
k,n:integer;
M,d: real;
begin
writeln('введите n');
readln(n);
writeln('введите Xk');
for k:=1 to n do readln(x[k]);
for k:=1 to n do m:=m+x[k];
m:=m/n;
for k:=1 to n do d:=(x[k]-m)*(x[k]-m);
d:=sqrt(d/(n-1));
writeln('M=',m,' ','d=',d);
end.
В приведенной программе описана функция для подвопроса а); прочие варианты закомментированы. Для получения других вариантов достаточно закомментировать строку y:=2*x; и снять комментарий с нужной строки.
function f(x:real):real;
begin
f:=2*x;
{
f:=x/3+9;
f:=x-4;
f:=x/8-6;
}
end;
var
x,x1,x2,dx,y:real;
begin
Writeln('Введите начальное значение, шаг табуляции, конечное значение');
Read(x1,dx,x2);
x:=x1;
repeat
y:=f(x);
Writeln('x=',x,', y=',y);
x:=x+dx
until x>x2+dx/2 { +dx/2 - это защита от накопления погрешности }
end.
Тестовое решение:
Введите начальное значение, шаг табуляции, конечное значение
0 0.33 3.3
x=0, y=0
x=0.33, y=0.66
x=0.66, y=1.32
x=0.99, y=1.98
x=1.32, y=2.64
x=1.65, y=3.3
x=1.98, y=3.96
x=2.31, y=4.62
x=2.64, y=5.28
x=2.97, y=5.94
x=3.3, y=6.6
Сомневающиеся в пользе "довеска" dx/2 в последней формуле, могут попробовать выполнить этот же контрольный пример, изменив предпоследнюю строку на более привычное until x>x2. И убедиться, что решение для х=3.3 пропадет.