Условие задачи : Написать программу которая будет определять сколько цифр в числе. Число вводит пользователь. Использовать цикл.
Сложность : средняя .
Задача не трудная если представить как всё у нас будет происходить. Допустим мы берем трехзначное число и хотим узнать сколько в нем цифр. И как это сделать ??? Нам на помощь придет операция div.
Искать какие это цифры нам не надо, надо только их количество. И чем нам поможет операция div?
Мы будем нашему числу искать целую часть, пока она не станет равна 0 — это будет условие выхода из цикла.
Давайте перейдем в примеру. Нам понадобиться 3 переменные :
- Под число
- Под количество цифр
- Под делитель
uses crt; var num , delit : longint; count : integer; begin write('Введите число : '); readln(num); {просим пользователя ввести число} readln; {чтобы программа не закрывалась} end.
Операция div у нас будет выглядеть так :
num div delit
Переменную delit мы будем постоянно увеличить, потом увидите зачем.
Нам нужен цикл repeat until, условие выхода у нас будет num div delit = 0, т.е. если целая часть у нас будет равна 0 , это будет значить что дальше цифр нет.
Также понадобиться условие которое будет у нас увеличивать цифры в числе и наш делитель.
count := 0 ;{начальное количество цифр} delit := 1 ; {т.к. на ноль делить нельзя присваиваем делителю единицу} repeat if (num div delit <> 0 ) then begin count := count + 1; delit := delit * 10; end; until(num div delit = 0);
Что мы тут делаем. Само собой цикл. В нем условие, если целая часть от деления не равна 0, то мы прибавляем одну цифру и делить увеличиваем в 10 раз.
Допустим число 234.
Цикл выполняется 1-й раз :
num div delit у нас будет 234 div 1 <> 0 вернет 234, условие выполняется, значит count у нас будет равняться 1 , а delit 10.
Цикл выполняется 2-й раз :
num div delit у нас будет 234 div 10 <> 0 вернет 23, условие выполняется, значит count у нас будет равняться 2, а delit 100.
Цикл выполняется 3-й раз :
num div delit у нас будет 234 div 100 <> 0 вернет 2, условие выполняется, значит count у нас будет равняться 3, а delit 1000.
Цикл выполняется 4-й раз :
num div delit у нас будет 234 div 1000 <> 0 вернет 0, условие не выполняется, выходим из цикла.
Вот принцип решения этой задачи. Прочитайте несколько раз, попробуйте сами такое проделать, тогда точно поймете.
Весь код программы :
uses crt; var num , delit : longint; count : integer; begin clrscr; {очищаем экран} write('Введите число : '); readln(num); {просим пользователя ввести число} count := 0 ; {начальное количество цифр} delit := 1 ; {т.к. на ноль делить нельзя присваиваем делителю единицу} repeat if (num div delit <> 0 ) then begin count := count + 1; delit := delit * 10; end; until(num div delit = 0); writeln('Количество цифр в числе : ', count); readln; {чтобы программа не закрывалась} end.