Условие задачи : Найти чему равна первая цифра числа. Число вводит пользователь.
Сложность : легкая .
Чтобы решить эту задачу нам снова понадобятся операции div и mod. Что мы будем с ними делать? Предположим мы ввели какое-то число, неважно какое, пусть будет 4213.
И мы должны к это числу применить наши операции. Напомню что :
- div — находит целую часть от деления
- mod — находит остаток от деления
Давайте один раз применим операцию mod к нашему числу :
4213 mod 10 {У нас получиться 3}
И занесем нашу тройку в какую-нибудь переменную, пусть будет otvet :
otvet := 4213 mod 10 ; {переменная ответ содержит три}
А наше число 4213 тоже занесем в переменную , чтобы было удобнее например number.
После того как мы получили 3, давайте к переменной number, т.е. к числу 4213 применим операцию div :
number := number div 10 ;
Теперь там будет содержаться 421. Вот какой код у нас на данный момент :
number := 4213; otvet := number mod 10; {тут будет 3} number := number div 10 ; {тут будет 421}
Теперь давайте еще раз применим :
number := 421; otvet := number mod 10; {тут будет 1} number := number div 10 ; {тут будет 42}
Еще разок :
number := 42; otvet := number mod 10; {тут будет 2} number := number div 10 ; {тут будет 4}
И еще разок :
number := 4; otvet := number mod 10; {тут будет 4} number := number div 10 ; {тут будет 0}
Надеюсь вы заметили что происходит, как только у нас number станет равно нулю, мы сразу прекратим выполнять наши операции, т.к. смысла нет.
Давайте добавим цикл и посмотри что получиться :
while (number <> 0) do begin otvet := number mod 10; number := number div 10 ; end;
Вот что должно получиться, теперь у нас будет искаться первая цифра числа.
Весь код программы :
uses crt; var number , otvet : longint; begin clrscr; write('Введите число : ');readln(number); while (number <> 0) do begin otvet := number mod 10; number := number div 10 ; end; writeln('Первая цифра числа равна ', otvet); readln; end.