На этой странице дано решение однотипных примеров For29 - For30 из задачника Абрамяна. Здесь рассматривается деление отрезка [A, B] числовой оси на равные части. В задаче For29 надо вывести точки деления и длину равных отрезков, на которые делится данный отрезок. В задаче For30 надо ещё и вычислить значения определенной функции в точках деления.
For29. Дано целое число N (> 1) и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на N равных отрезков. Вывести H — длину каждого отрезка, а также набор точек
A, A + H, A + 2·H, A + 3·H, ..., B,
образующий разбиение отрезка [A, B].
var
i, N: byte;
A, B, H: real;
begin
writeln('Введите концы отрезка (A < B):');
write(' A = ');
readln(A);
write(' B = ');
readln(B);
writeln('На сколько частей разбит отрезок?');
write(' N = ');
readln(N);
H := (B - A) / N; { <== Длина отрезков }
writeln;
writeln('Длина отрезков: ', H:0:3);
writeln('Набор точек при делении:');
{ Вычисляем и выводим набор точек: }
for i := 0 to N do
write(' ', A + i * H:0:3);
readln
end.
**type** byte;
: Представляет 8-битовое целое число без знака.Диапазон значений: 0..255**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 For30. Дано целое число N (>1) и две вещественные точки на числовой оси: A, B (A < B). Отрезок [A, B] разбит на N равных отрезков. Вывести H — длину каждого отрезка, а также значения функции F(X) = 1 − sin(X) в точках, разбивающих отрезок [A, B]:
F(A), F(A + H), F(A + 2·H), ..., F(B).
var
i, N: word;
A, B, H, F, x: real;
begin
write('A = ');
readln(A);
write('B = ');
readln(B);
write('N = ');
readln(N);
H := (B - A) / N; { <== Вычисляем длину отрезков }
writeln;
writeln('Длина отрезков: ', H:0:3);
writeln('Значения функции F(x) = 1 - sin(x) в точках деления ',
'отрезка [', A, ', ', B, '] на ', N, ' равных частей:');
writeln;
{ Вычисляем набор точек и находим значение
функции в данных точках: }
for i := 0 to N do
begin
x := A + i * H; { <== Вычисляем i-ю точку }
F := 1 - sin(x); { <== Значение функции в i-ой точе }
{ Выводим на экран таблицу значений: }
writeln(' F(', x:0:2, ') = ', F:0:3);
end;
readln
end.
**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**function** Sin(x: real): real;
: Возвращает синус числа x. * * *
Второе решение задачи использует функцию:
{ ОПИСАНИЕ ФУНКЦИИ F(X): }
function F(x: real): real;
begin
F := 1 - sin(x) { <== Функция }
end;
var
i, N: word;
A, B, H, x: real;
begin
write('A = ');
readln(A);
write('B = ');
readln(B);
write('N = ');
readln(N);
H := (B - A) / N; { <== Вычисляем длину отрезков }
writeln;
writeln('Длина отрезков: ', H:0:3);
writeln('Значения функции:');
{ Вычисляем набор точек и находим значение
функции в данных точках: }
for i := 0 to N do
begin
x := A + i * H; { <== Вычисляем i-ю точку }
{ Выводим значения: }
writeln('':2, 'F(', x:0:2, ') = ', F(x):0:3);
end;
readln
end.
**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**function** Sin(x: real): real;
: Возвращает синус числа x.**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308