Сумма первой и последней цифр числа | Язык Паскаль
Pascal. Основы программирования Сложные Средние Простые задачи

Сумма первой и последней цифр числа

Найти сумму первой и последней цифр любого целого положительного числа.

Извлечь последнюю цифру числа легко: достаточно найти остаток от деления на 10. В языке Паскаль это делается с помощью оператора mod.

Чтобы извлечь первую цифру числа, надо знать его разрядность, после чего найти остаток от деления 10 в степени "разряд минус 1". Так, если число трехзначное, то надо делить на 100, то есть 102. Однако программа разрядности числа не знает.

Поэтому, чтобы извлечь первую цифру числа, будем последовательно делить число нацело на 10, пока от него не останется одна цифра, которая и будет первой. После этого найти ее сумму с последней цифрой, которая была найдена ранее.

var
    n: longint;
    a, b: byte;

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);
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.