Помогите пожалуйста,написать программу в паскале!!1 Решить задачу с использованием...

0 голосов
29 просмотров

Помогите пожалуйста,написать программу в паскале!!1
Решить задачу с использованием процедур. Указать выделенные подзадачи, решаемые процедурами.
Последовательность Хейеса. Дано натуральное число n (n > 1). Если оно чётно, то его делят на 2, иначе умножают на 3 и прибавляют 1. Если полученное число не равно 1, то действия повторяются до тех пор, пока не получится 1. Вершиной называют наибольшее число в получающейся последовательности. Для заданного n построить указанную последовательность, указать её вершину и количество шагов


Информатика (93 баллов) | 29 просмотров
0

Это либо не школьное задание, либо конкурсное.

0

На ЕГЭ было сложнее, так что я допускаю что это школьное.

0

Не допускаю, что школьное, там про Хайеса никто не слыхивал, а вот в заданиях, к примеру, Петрозаводского вуза эта задача есть...

Дан 1 ответ
0 голосов
Правильный ответ

//Pascal ABC.NET 3.1 сборка 1219

Var
 k,n,max:integer;

 procedure hase(var k,n,max:integer); //сама последовательность
 begin
  if not(odd(n)) then n:=n div 2 else n:=n*3+1; //условие про чётность
  writeln(n); //вывод нового члена последовательности
  inc(k); //увеличение значения счётчика шагов
  if max end;

  procedure start(var k,n,max:integer); //название процедуры намекает
 begin
  readln(n);
  k:=0;
  writeln('Seq:');
  max:=integer.MinValue;
  while n<>1 do
  hase(k,n,max);
  writeln('Шаги:',k);
  writeln('Вершина:',max);
 end;
 begin
 start(k,n,max);
end.
Пример ввода:
6
Пример вывода:
Seq:
3
10
5
16
8
4
2
1
Шаги:8
Вершина:16

(38.6k баллов)