ПОМОГИТЕ ПОЖАЛУЙСТА решить через паскаль
Введите трехзначные числа, у которых вторая цифра равна произведения первой и последней цифре.
Ответы
Ответ:
выбери и пиши ответ
Объяснение:
Последовательно делить число нацело на 10, пока от него не останется одна цифра, которая и будет первой. После этого найти ее сумму с последней цифрой, которая была найдена ранее.
Преобразовать число в строку, извлечь первый символ, после чего снова преобразовать его в число для нахождения суммы.
Здесь мы рассмотрим решение задачи только по первому варианту, без преобразования в строку.
var
a, b, sum, n: longint;
begin
readln(n);
a := n mod 10; // последняя цифра
n := n div 10;
while n > 0 do begin
b := n mod 10;
n := n div 10;
end;
writeln(a+b);
readln;
end.
В коде выше в переменную a записывается последняя цифра. После чего число делится нацело на 10 и эта цифра исключается. Далее в цикле постепенно число сокращается на один разряд с помощью div. Перед этим удаляемая цифра присваивается переменной b. Когда все цифры числа будут удалены, то в переменной b останется первая. После цикла значение переменных складывается.
Более компактное решение:
var
a: longint;
b: byte;
begin
readln(a);
b := a mod 10;
while a >= 10 do
a := a div 10;
writeln(b+a);
end.
Здесь число a в цикле постепенно сокращается до одного первого разряда. Перед этим самый младший разряд, т. е. последняя цифра числа сохраняется в переменной b.
Решить задачу можно не только с помощью цикла while, но и repeat:
var a,b,c,d:integer;
begin
readln(a);
d := a mod 10;
repeat
b := a mod 10;
a := a div 10;
until a=0;
c := d+b;
writeln(c);
end.
Добавить комментарий
Комментарии
Длина числа
Владимир (не проверено)
07/03/2019
Длину числа можно вычислить по формуле log10(x), но получится не целое число, так что его придется округлить в меньшую сторону floor( log10(x)