Root /ArchiveAbout
()

Вычисление последовательности с заданной точностью

Вычисление последовательности с заданной точностью

На этой странице находятся решения последних трех задач While28 - While30 из задачника Абрамяна. Задачи While28 и While29 - вычисление значения последовательности с наперед заданной точностью, а While30 - задача о прямоугольнике и квадрате (сколько квадратов поместится в прямоугольнике).

While28. Дано вещественное число ε (> 0). Последовательность вещественных чисел AK определяется следующим образом:

A1 = 2, AK = 2 + 1/AK−1, K = 2, 3, … .

Найти первый из номеров K, для которых выполняется условие |AK − AK−1| < ε, и вывести этот номер, а также числа AK−1 и AK.

var
  K, n: integer;
  e, A1, A2: real;

begin
  write('e = ');
  readln(e);
  A1 := 0; { <== первое число }
  A2 := 2; { <== второе число }
  K := 1; { <== начальный номер }
  n := trunc(-ln(e)/ln(10)) + 1; { <== количество цифр для округления }
  { Выполняем цикл до тех пор, пока разница (по мудулю) двух соседних
  значений последовательности не меньше заданного числа e: }
  while (abs(A2 - A1) >= e) do
  begin
    A1 := A2; { <== А1 присваиваем предыдущее значение A2 }
    A2 := 2 + 1 / A1; { <== вычисляем новое значение A2 }
    inc(K) { <-- увеличиваем номер на 1 }
  end;
  writeln('K = ', K);
  writeln('A', K-1, ' = ', A1:0:n, ',  A', K, ' = ', A2:0:n);
  readln
end.

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

While29. Дано вещественное число ε (> 0). Последовательность вещественных чисел AK определяется следующим образом:

A1 = 1, A2 = 2, AK = (AK−2 + 2·AK−1)/3, K = 3, 4, … .

Найти первый из номеров K, для которых выполняется условие |AK − AK−1| < ε, и вывести этот номер, а также числа AK−1 и AK.

var
  K, n: integer;
  e, A1, A2, AK: real;

begin
  write('e = ');
  readln(e);
  A1 := 1;
  A2 := 2;
  AK := (A1 + 2 * A2) / 3;
  K := 3; { <== начальный номер }
  n := trunc(-ln(e)/ln(10))+2; { <== количество цифр для округления }
  { Выполняем цикл до тех пор, пока разница (по мудулю) двух соседних
  значений последовательности не меньше заданного числа e: }
  while (abs(AK - A2) >= e) do
  begin
    inc(K); { <-- увеличиваем номер на 1 } 
    A1 := A2; { <== новое значение A1 }
    A2 := AK; { <== новое значение A2 }
    AK := (A1 + 2 * A2) / 3 { <== вычисляем значение AK }
  end;
  writeln('K = ', K);
  writeln('A', K-1, ' = ', A2:0:n, ',  A', K, ' = ', AK:0:n);
  readln
end.

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

Количество квадратов без наложений

While30. Даны положительные числа A, B, C. На прямоугольнике размера A × B размещено максимально возможное количество квадратов со стороной C (без наложений). Найти количество квадратов, размещенных на прямоугольнике. Операции умножения и деления не использовать.

var
  A, B, C, K, p: integer;

begin
  writeln('Введите целые положительные числа A, B, C:');
  readln(A, B, C);
  K := 0; { <== начальное количество прямоугольников }
  { Внешний цикл выполняем до тех пор, пока сторона A не
  меньше стороны C: }
  while A >= C do
  begin
    p := B; { <== фиксируем B }
    { Внутренний цикл выполняем до тех пор,
    пока сторона B не меньше стороны C: }
    while p >= C do
    begin
      inc(K); { <== увеличиваем количиство квадратов K на 1 }
      p := p - C { <== уменьшаем сторону B на C }
    end;
    A := A - C { <== уменьшаем сторону A на C }
  end;
  writeln('Количество квадратов в прямоугольнике: ', K);
  readln
end.

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647