Найти n! и проверить, встречаются ли в записи этого числа две рядом стоящие одинаковые цифры - Turbo Pascal
Формулировка задачи:
Найти n! и проверить, встречаются ли в записи этого числа две рядом стоящие одинаковые цифры
Решение задачи: «Найти n! и проверить, встречаются ли в записи этого числа две рядом стоящие одинаковые цифры»
textual
Листинг программы
- ...
- for i:=1 to n do begin {цикл вычисления факториала}
- * * t:=0;s1:='';
- * * for j:=length(s) downto 1 do begin {длинное число представлено строкой, идем с последней цифры до первой}
- * * * t:=t+(ord(s[j])-48)*i;{получаем текущую цифру функция ord - возвращает код символа из таблицы символов,
- из него вычитаем chr код цифры "0"(он равен 48), в итоге имеем цифру и ее умножаем
- на множитель для вычисления факториала, результат накапливаем в "уме", по сути это
- умножение в "столбик"}
- * * * s[j]:=chr(48+t mod 10);{последнюю цифру накопленного результата сохраняем в ответе}
- * * * t:=t div 10;{уменьшаем "в уме" на одну цифру справа (ее уже записали в ответ)}
- * * end;
- * * * if t>0 then str(t,s1);{если в "уме" остались цифры их преобразуем в строку}
- * * * s:=s1+s;{пишем перед числом}
- * *end;
- * *writeln('n!=',s);{собственно печатаем ответ}
- t:=0;{повторов нет}
- for i:=1 to length(s)-1 do if s[i]=s[i+1] then t:=1;{проходим весь цикл записи числа, и если текущая цифра равна следующей, то повтор есть}
- if t=1 then writeln('ECTb noBTopbI!') else writeln('HeT noBTopoB');{собственно вывод результата}
- readln;
- ...
Объяснение кода листинга программы
- Создается переменная
n
, которую предполагается задать позже. - Создается переменная
t
, которая будет использоваться для хранения текущего значения факториала. - Создается переменная
s
, которая будет использоваться для хранения строки, представляющей длинное число. - Создается цикл
for
, который будет выполнятьсяn
раз. - Внутри цикла создается вложенный цикл
for
, который будет выполняться до тех пор, пока длина строкиs
больше 1. - Внутри вложенного цикла каждая цифра строки
s
умножается на соответствующий множитель для вычисления факториала и накапливается в переменнойt
. - После окончания вложенного цикла последняя цифра накопленного результата сохраняется в последней позиции строки
s
. - Если в переменной
t
есть остаток, то все оставшиеся цифры преобразуются в строку и записываются перед числомs
. - После окончания внешнего цикла проверяется, есть ли повторения в числе.
- Если есть повторения, выводится сообщение
ECTb noBTopbI!
, иначе выводится сообщениеHeT noBTopoB
. - Выводится
readln
, чтобы прочитать ввод пользователя.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д