Форум » Циклы и ветвления » задание 6 » Ответить

задание 6

vin: Здравствуйте, в тексте программы опечатка? var x:integer; begin readln(x); while x < 100 do begin if x mod 2 < 1 x := x div 2 else x := 3*x + 1 end; writeln(x); end. Ветка " да" отсутствует или я не права?

Ответов - 8

vin: это задача 143, очень интересно, почему не выводит результат обработав числа меньше 100, не всегда выводит. первое нашла 15, потом 23, объяснить не могу

Поляков: vin пишет: первое нашла 15, потом 23, объяснить не могу Это задача на написание программы. Объяснять не требуется. А дополнительную информацию, если интересно, можно посмотреть здесь.

vin: спасибо, программно у меня не получилось(( var x, k:integer; begin //readln(x); for k:=1 to 100 do begin while x < 100 do begin if x mod 2 < 1 then x := x div 2 else x := 3*x + 1; end; writeln(x, k); end; end.


Поляков: vin пишет: программно у меня не получилось(( Там может быть 1) зацикливание или 2) завершение цикла. Чтобы ловить зацикливание, введите счетчик итераций цикла и выходите через, скажем, 1000 итераций.

vin: спасибо за идею, даже не додумалась

AnnaPershina: [pre2] k=0 for x0 in range(1,100): x=x0 fl=0 while (x<100): if x % 2 <1: x=x//2 else: x = 3*x + 1 k += 1 if k>1000: fl=1 break if fl==0: print(x0,' ',x) [/pre2] Подскажите, пожалуйста, что не так

Поляков: Счётчик k нужно обнулять для каждого числа (непосредственно перед while).

AnnaPershina: Спасибо большое. Погуляла, пересмотрела программу и получила.



полная версия страницы