• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Нужна помощь в решении задачи Pascal

kickmaster

Новые
Регистрация
8 Окт 2012
Сообщения
21
Реакции
0
Баллы
0
Нужна помощь в решении задачи Pascal

Доброго времени суток. Помогите пожалуйста решить задачу.:tehnari_ru_837:
Free Pascal Lazarus.
Условия.
Дано натурально число n меньше 100.Получить из него новое число такое, чтобы цифры в нем располагались по возрастанию. Разобрать случай для однозначных и двухзначных чисел. Циклы не применять.
Заранее спасибо.
 
Заранее спасибо.
Да пожалуйста. Хотя не могу не заметить, юноша, что Ваш настрой на жизнь чужим умом - путь в никуда. Вот Вам лень разбираться с самыми простенькими задачками, а дальше, когда уровень возрастет, то что? Рассчитываете, что и впредь будет по схеме: получил задание - вывылил на форум - скатал решение - сдал? Не будет, уверяю Вас. Так что мой Вам совет: беритесь за ум, пока не поздно. И начните с того, что вместо тупого скатывания решений Ваших задачек, попытайтесь хотя бы в них разобраться.
Впрочем, Вам жить, так что решайте сами.
Код:
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.
 
Я всё понимаю, но я сначала сам пытаюсь решить задачу, а потом уже прошу помощи.
И пытаюсь понять как решена задача.Можно немного расписать решение задачи?
 
Можно немного расписать решение задачи?
Можно. Без проблем.
Как выделить цифры двузначного числа? А вот как: количество десятков есть результат целочисленного деления (div) числа на 10, а количество единиц - остаток от такого деления (mod). Так,
84 div 10 = 8
84 mod 10 = 4
Проверив, что введенное число - действительно двузначное (>9) и получив эти две цифры, сравниваем их между собой, и если окажется, что первая больше второй (в нашем примере 8>4), то вторую умножаем на 10 и прибавляем первую, таким образом меняя их местами:
4*10 + 8 = 48.
Вроде и всё.
 
Можно. Без проблем.
Как выделить цифры двузначного числа? А вот как: количество десятков есть результат целочисленного деления (div) числа на 10, а количество единиц - остаток от такого деления (mod). Так,
84 div 10 = 8
84 mod 10 = 4
Проверив, что введенное число - действительно двузначное (>9) и получив эти две цифры, сравниваем их между собой, и если окажется, что первая больше второй (в нашем примере 8>4, то вторую умножаем на 10 и прибавляем первую, таким образом меняя их местами:
4*10 + 8 = 48.
Вроде и всё.

Спасибо большое =)
 
Назад
Сверху