Напишите подробное решение (с прокруткой или рассуждением) укажите наименьшее из таких чисел , при вводе которых алгоритм печатает сначала 4, а потом 0. var x, a, b, c: integer; begin readln(x); a: = 0; b: = 0; while x > 0 do begin c: = x mod 2; if c = 0 then a: = a + 1 else b: = b + 1; x: = x div 10; end; writeln(a); writeln(b); end.

agexmambo agexmambo    2   19.09.2019 04:10    0

Ответы
1крутой1дядя1 1крутой1дядя1  16.08.2020 18:30
Нужно, чтобы при выводе переменная a = 4, b = 0. Алгоритм работает так: к "a" прибавляет единицу при условии, что оно четное, к "b", если нечетное. Поэтому нужно найти число, которое четырехзначное и четное, учитывая, что после каждого прогона цикла, число делят на 10, то есть "отсекают" последнюю цифру числа.

У меня получилось минимальное - 2000.

1)
c = 2000 mod 2;
c = 0 -> a = 0 + 1.
x = 2000 div 10.
2) c = 200 mod 2;
c = 0 -> a = 1 + 1.
x = 200 div 10.
3) c = 20 mod 2.
c = 0 -> a = 2 + 1.
x = 20 div 10.
4) c = 2 mod 2.
c = 0 -> a = 3 + 1.
x = 2 div 10.

Итого на выводе получаем (4 0), что и нужно было.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика