Найти 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;
...

Объяснение кода листинга программы

  1. Создается переменная n, которую предполагается задать позже.
  2. Создается переменная t, которая будет использоваться для хранения текущего значения факториала.
  3. Создается переменная s, которая будет использоваться для хранения строки, представляющей длинное число.
  4. Создается цикл for, который будет выполняться n раз.
  5. Внутри цикла создается вложенный цикл for, который будет выполняться до тех пор, пока длина строки s больше 1.
  6. Внутри вложенного цикла каждая цифра строки s умножается на соответствующий множитель для вычисления факториала и накапливается в переменной t.
  7. После окончания вложенного цикла последняя цифра накопленного результата сохраняется в последней позиции строки s.
  8. Если в переменной t есть остаток, то все оставшиеся цифры преобразуются в строку и записываются перед числом s.
  9. После окончания внешнего цикла проверяется, есть ли повторения в числе.
  10. Если есть повторения, выводится сообщение ECTb noBTopbI!, иначе выводится сообщение HeT noBTopoB.
  11. Выводится readln, чтобы прочитать ввод пользователя.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 4 из 5
Похожие ответы