Объясните пожалуйста вот этот алгоритм в Free Pascal
Объясните пожалуйста вот этот алгоритм в Free Pascal
Объясните пожалуйста вот этот алгоритм в Free Pascal, только пожалуйста поподробнее, а то уже 2 листа исписал и ничего не понял
Var k,i : integer;
begin
k := 4;
for i := 1 to 3 do
k := 2*k + i;
writeln(k);
end.
-
Это цикл со счётчиком.
Т. е. ты сам задаёшь то, сколько раз (3 раза, в данном случае) должны выполняться команды в теле цикла (в данной случае, это команды арифметического присваивания) .
И нужно понимать, что переменная сохраняет своё значение до тех пор, пока не выполняется присваивание.В данном алгоритме
В первом цикле к = 2*4 + 1 = 9
Во втором цикле (выражение нужно вычислять со значением переменной к = 11) к = 2*9+2 = 20
Третий цикл к = 2*20+3 = 43И по достижению переменной значения 3 цикл завершается и к становится равной 43.
-
сам по себе алгоритм выводит числа 9, 20, 43..
UPD.. ну да, не выводит... прочел как
for i := 1 to 3 do BEGIN
k := 2*k + i;
writeln(k); END;UPD2
1) k = 2*4+1=9
2) k = 9*2+2=20
3) k = 20*2+3=43
вывести k -
Считает сумму. Вроде 43 получится.
Александр Безруков: Не выводит.
-
Выведет '43'. А вот зачем он такой нужен - не знаю.
-
элементарно же
задаем к =4
и 3 раза к*2 плюс от 1 до 3, выводим итоговый кэлементарнейший алшоритм. что именно не понятно?
-
Выводит число 43 на экран, специальным образом формируя его в цикле с использованием итерационной переменной i и накопительной переменной k, в которой в итоге и лежит результат.
-
что бы этот алгоритм не считал, скажи своему преподу что хватит говнокодить )))
это же надо было такое придумать )))writeln(k*8+11) не легче?
если i предполагается вводить (то есть заранее не известно максимальное значение i), то результат равен (1 shl i)*(k+1)+i, или иначе ((k+1) shl i)+i
writeln(((k+1) shl i)+i);и не надо никаких циклов вообще.
Так что переписываем это "по нормальному" и показываем преподу за пятёрку как надо писать кодпо поводу "что делает этот код"... хм.. . не знаю.. . прибавляет к числу единицу, сдвигает на введённое количество разрядов и потом прибавляет число разрядов к результату