Вывести первые n членов треугольной последовательности - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

Дана монотонная последовательность, в которой каждое натуральное число k встречается ровно k раз: 1, 2, 2, 3, 3, 3, 4, 4, 4, 4, ... По данному натуральному n выведите первые n членов этой последовательности. Попробуйте обойтись только одним циклом for. Входные данные Вводится натурально число n. Выходные данные Выведите ответ на задачу. Примеры входные данные 2 выходные данные 1 2 входные данные 5 выходные данные 1 2 2 3 3

Решение задачи: «Вывести первые n членов треугольной последовательности»

textual
Листинг программы
//рекурсивная процедура вывода чисел ряда
//k-число n-количество выводимых чисел
procedure vyvod(k,n:integer);
begin
if n>0 then
 begin
  write(k,' ');
  vyvod(k,n-1);
 end;
end;
var n,k,q,i:integer;
    a:real;
begin
write('n=');
readln(n);
//найдем ближайшее треугольное число сверху
a:=(-1+sqrt(1+8*n))/2;//из формулы Tn=n*(n+1)/2
if frac(a)=0 then k:=trunc(a)
else k:=trunc(a)+1;
q:=0;
for i:=1 to k-1 do
 begin
  vyvod(i,i);
  q:=q+i;
 end;
vyvod(k,n-q);
end.

Объяснение кода листинга программы

  1. В начале кода объявляются переменные n, k, q и i, а также переменная a типа real.
  2. Затем происходит чтение значения переменной n с помощью функции readln.
  3. Находится ближайшее треугольное число сверху с помощью формулы Tn=n*(n+1)/2. Если дробная часть этого числа равна нулю, то k присваивается целая часть числа, иначе k присваивается целая часть плюс единица.
  4. Переменная q инициализируется значением 0.
  5. Затем происходит цикл for, который выполняется от 1 до k-1. Внутри цикла вызывается рекурсивная процедура vyvod, которая выводит текущее значение i и все предыдущие значения i. Значение i увеличивается на 1 на каждой итерации цикла.
  6. После завершения цикла for вызывается последняя итерация vyvod с аргументами k и n-q.
  7. Конец программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5
Похожие ответы