ВВЕРХ
ВНИЗ

Разбиение отрезка на равные части

На этой странице дано решение однотипных примеров 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].

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
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.

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).


Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
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.

*   *   *

Второе решение задачи использует функцию:

Код Pascal
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
27  
28  
29  
30  
31  
{ ОПИСАНИЕ ФУНКЦИИ 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.

Яндекс.Метрика