Кумир я не знаю, а что эту экзотика ещё преподают?
Он нигде, кроме школ, никогда не использовался.
Напишу только алгоритм.
1) Начало
2) Ввод исходного числа n.
3) n = n*n // возводим n в квадрат
4) n = 10*n // умножаем на 10. Теперь десятые доли стали единицами
5) n = [n] // оставляет целую часть, дробную отбрасываем
6) n = n - [n/10]*10 // вычисляем остаток от деления на 10, то есть цифру единиц.
7) Вывод n
8) Конец.
Объяснение. Допустим, мы ввели n = 1,4.
В 3 пункте мы умножили его само на себя, то есть возвели в квадрат. Стало n = 1,96.
Нам нужно получить цифру 9.
В 4 пункте мы умножили число на 10, получили n = 19,6.
В 5 пункте отбросили дробную часть, стало n = 19.
В 6 пункте самая трудная операция:
n = n - [n/10]*10 = 19 - [1,9]*10 = 19 - 1*10 = 9
Таким образом, мы получаем последнюю цифру любого целого числа, то есть остаток от деления на 10.
Вообще-то вместо этой сложной формулы во многих языках есть готовая функция Mod, дающая сразу остаток от деления. Пишется так:
n = n Mod 10
Из числа 19 сразу получаем 9.
Если такая функция есть в Кумире, используйте её. Если нет, тогда мою формулу.
Поделитесь своими знаниями, ответьте на вопрос:
Составьте программу, которая по введенному k – числу цветков печатает фразу «в букете k цветков», причем согласовывает окончание слова «цветок» с числом k. на паскале
Var
k:integer;
Begin
WriteLn('Введи число k');
ReadLn(k);
if k in[11..19] then WriteLn('В букете ',k,' цветков')
else
Case k mod 10 of
1:WriteLn('В букете ',k,' цветок');
2..4:WriteLn('В букете ',k,' цветка');
0,5..9:WriteLn('В букете ',k,' цветков');
end
End.
Через if :
Var
k:integer;
Begin
WriteLn('Введи число k');
ReadLn(k);
if k in[11..19] then WriteLn('В букете ',k,' цветков')
else
Begin
if k=1 then WriteLn('В букете ',k,' цветок');
if k mod 10 in[2..4] then WriteLn('В букете ',k,' цветка');
if (k mod 10 in[5..9])or(k=0) then WriteLn('В букете ',k,' цветков');
end
End.