Условие задачи : Дано натуральное число N.Определить произведение ненулевых цифр числа. Использовать цикл Repeat и While.
Сложность : легкая .
Решение задачи Pascal :
Для начала продумаем решение. Сначала попросим пользователя ввести число.
Затем в цикле мы будем разделять число на цифры и будем проверять равна ли она нулю. Если нет то считаем произведение.
Для того чтобы определить произведение ненулевых цифр числа нам понадобиться три переменные:
- Для числа.
- Для произведения не нулевых цифр числа.
- Для цифры которую мы будем проверять равна ли она нулю
Начнем мы с каркаса нашей программы :
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.