Задачи по Pascal. Определить произведение ненулевых цифр числа.

pascalУсловие задачи : Дано натуральное число N.Определить произведение ненулевых цифр числа. Использовать цикл Repeat и While.

Сложность : легкая .


 

Решение задачи Pascal :

Для начала продумаем решение. Сначала попросим пользователя ввести число. Затем в цикле мы будем разделять число на цифры и будем проверять равна ли она нулю. Если нет то считаем произведение.

Для того чтобы определить произведение ненулевых цифр числа нам понадобиться три переменные:

1. Для числа.
2. Для произведения не нулевых цифр числа.
3. Для цифры которую мы будем проверять равна ли она нулю

Начнем мы с каркаса нашей программы :

var
   number, numeric, proiz : integer;
begin
end.

Тут мы просто объявили наши переменные.

Дальше попросим пользователя ввести число и присвоим нашей переменной proiz единицу, если этого не сделать то произведение будет всегда равняться нулю :

write('Введите число : '); readln(number);

proiz := 1;

Теперь цикл, как я и говорил в нем мы будем отделять цифру а потом проверять равна ли она нулю. Отделять цифру мы будем с помощью операции mod. А убирать цифру из числа будем с помощью операции div.

Похожий пример был ( тут )

Там вы можете посмотреть как это всё подробно работает. И так сначала цикл while :

while (number > 0) do
   begin
       numeric := number mod 10;
       if numeric <> 0 then
          proiz := proiz * numeric;

       number := number div 10;
   end;

Т.е. сначала мы записали цифру в numeric, затем проверяем равна ли она нулю, если нет то считаем произведение, а потом убираем из числа одну цифру.

Теперь цикл repeat until. В самом цикле всё тоже самое, меняется только условие цикла :

repeat
   numeric := number mod 10;

   if numeric <> 0 then
       proiz := proiz * numeric;

    number := number div 10;
until(number = 0);

Вот и всё.

Всё решение задачи Pascal (while):

uses crt;
var
   number, numeric, proiz : integer;
begin
clrscr;
write('Введите число : '); readln(number);

proiz := 1;

while (number > 0) do
   begin
       numeric := number mod 10;
       if numeric <> 0 then
          proiz := proiz * numeric;

       number := number div 10;
   end;

writeln('Произведение равно : ', proiz);
readln;
end.

Всё решение задачи Pascal (repeat):

uses crt;
var
   number, numeric, proiz : integer;
begin
clrscr;
write('Введите число : '); readln(number);

proiz := 1;

repeat
   numeric := number mod 10;

   if numeric <> 0 then
       proiz := proiz * numeric;

    number := number div 10;
until(number = 0);

writeln('Произведение равно : ', proiz);
readln;
end.

Всё решение задачи Pascal (repeat и while):

uses crt;
var
   number, numeric, proiz, number1, numeric1, proiz1 : integer;
begin
clrscr;
write('Введите число : '); readln(number);

number1 := number;

proiz := 1;
proiz1 := proiz;

repeat
   numeric := number mod 10;

   if numeric <> 0 then
       proiz := proiz * numeric;

    number := number div 10;
until(number = 0);

while (number1 > 0) do
   begin
       numeric1 := number1 mod 10;
       if numeric1 <> 0 then
          proiz1 := proiz1 * numeric1;

       number1 := number1 div 10;
   end;

writeln('Произведение repeat равно  : ', proiz);
writeln('Произведение while равно  : ', proiz1);
readln;
end.

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

proiznenylevih

6 комментариев

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

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