Условие задачи : Дано натуральное число 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.
Вот результат :

Огромное спасибо , если еще с for сделаете , цены вам не будет
super
спасибо))))
Ты лучший)
всегда рад помочь)
Красава!Нереально помог просто))