Задачи по Pascal. Сколько цифр в числе?

pascalУсловие задачи : Написать программу которая будет определять сколько цифр в числе. Число вводит пользователь. Использовать цикл.

Сложность : средняя .

Задача не трудная если представить как всё у нас будет происходить. Допустим мы берем трехзначное число и хотим узнать сколько в нем цифр. И как это сделать ??? Нам на помощь придет операция div.

Информация
div — находит целую часть от деления

Искать какие это цифры нам не надо, надо только их количество. И чем нам поможет операция div?

Мы будем нашему числу искать целую часть, пока она не станет равна 0 — это будет условие выхода из цикла.
Давайте перейдем в примеру. Нам понадобиться 3 переменные :

1. Под число
2. Под количество цифр
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.

Вот результат :

ris112

Написать ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *