Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Нужна помощь в решении задачи Pascal (http://www.tehnari.ru/f43/t79926/)

kickmaster 31.10.2012 23:46

Нужна помощь в решении задачи Pascal
 
Доброго времени суток. Помогите пожалуйста решить задачу.:tehnari_ru_837:
Free Pascal Lazarus.
Условия.
Дано натурально число n меньше 100.Получить из него новое число такое, чтобы цифры в нем располагались по возрастанию. Разобрать случай для однозначных и двухзначных чисел. Циклы не применять.
Заранее спасибо.

Vladimir_S 01.11.2012 09:52

Цитата:

Сообщение от kickmaster (Сообщение 813236)
Заранее спасибо.

Да пожалуйста. Хотя не могу не заметить, юноша, что Ваш настрой на жизнь чужим умом - путь в никуда. Вот Вам лень разбираться с самыми простенькими задачками, а дальше, когда уровень возрастет, то что? Рассчитываете, что и впредь будет по схеме: получил задание - вывылил на форум - скатал решение - сдал? Не будет, уверяю Вас. Так что мой Вам совет: беритесь за ум, пока не поздно. И начните с того, что вместо тупого скатывания решений Ваших задачек, попытайтесь хотя бы в них разобраться.
Впрочем, Вам жить, так что решайте сами.
Код:

Var
 n:Byte;
Begin
 Write('n (<100) = ');
 Readln(n);
 If (n>9) and ((n div 10)>(n mod 10)) then
  n:=(n mod 10)*10+(n div 10);
 Writeln('new n = ',n);
 Readln;
End.


kickmaster 01.11.2012 15:08

Я всё понимаю, но я сначала сам пытаюсь решить задачу, а потом уже прошу помощи.
И пытаюсь понять как решена задача.Можно немного расписать решение задачи?

Vladimir_S 01.11.2012 15:29

Цитата:

Сообщение от kickmaster (Сообщение 813422)
Можно немного расписать решение задачи?

Можно. Без проблем.
Как выделить цифры двузначного числа? А вот как: количество десятков есть результат целочисленного деления (div) числа на 10, а количество единиц - остаток от такого деления (mod). Так,
84 div 10 = 8
84 mod 10 = 4
Проверив, что введенное число - действительно двузначное (>9) и получив эти две цифры, сравниваем их между собой, и если окажется, что первая больше второй (в нашем примере 8>4), то вторую умножаем на 10 и прибавляем первую, таким образом меняя их местами:
4*10 + 8 = 48.
Вроде и всё.

kickmaster 01.11.2012 16:08

Цитата:

Сообщение от Vladimir_S (Сообщение 813430)
Можно. Без проблем.
Как выделить цифры двузначного числа? А вот как: количество десятков есть результат целочисленного деления (div) числа на 10, а количество единиц - остаток от такого деления (mod). Так,
84 div 10 = 8
84 mod 10 = 4
Проверив, что введенное число - действительно двузначное (>9) и получив эти две цифры, сравниваем их между собой, и если окажется, что первая больше второй (в нашем примере 8>4, то вторую умножаем на 10 и прибавляем первую, таким образом меняя их местами:
4*10 + 8 = 48.
Вроде и всё.

Спасибо большое =)

Vladimir_S 01.11.2012 16:20

Цитата:

Сообщение от kickmaster (Сообщение 813440)
Спасибо большое =)

Да не за что.


Часовой пояс GMT +4, время: 05:17.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.