Форум » Циклы и ветвления » задание 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: Спасибо большое. Погуляла, пересмотрела программу и получила.
полная версия страницы