Новые сообщения · Правила  
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Berestovskiy  
Ребятушки, помогите в Паскале начертать задачу
Вводится число n переставить его цифры, что бы получилось наибольшее (или наименьшее) число. Не использовать строки и массивы.
1 | Автор: Droopy | 2012-01-12, 15:34   |  Репутация: [ + 0 ]
Ограничения на ввод есть какие-то?

Нужна помощь? Сюда: vkontakte.ru/berestovskiy
2 | Автор: Berestovskiy | 2012-01-13, 14:55   |  Репутация: [ + 211 ]
Неа, любое число, ну в разумных пределах, наверное)
3 | Автор: Droopy | 2012-01-13, 17:10   |  Репутация: [ + 0 ]
нужно думать..

Нужна помощь? Сюда: vkontakte.ru/berestovskiy
4 | Автор: Berestovskiy | 2012-01-13, 21:28   |  Репутация: [ + 211 ]
Там самое сложное это цифры отделить друг от друга, а потом сравнивать просто с единицей, двойкой и тд
5 | Автор: Droopy | 2012-01-15, 11:39   |  Репутация: [ + 0 ]
5 | Автор: Droopy | 2012-01-15, 11:39   |  Репутация: [ + 0 ]
Цифры отделить это как раз самое лёгкое :)
Самое тяжкое - узнать какое число на самом деле по величине
А так: Если число двузначное:
Получить первую цифру:
N div 10
Получить вторую:
N mod 10
Если трёхзначное, то
Получить первую цифру:
N div 100
Получить вторую:
N div 10 mod 10
Третью:
N mod 10
Ну и так далее)


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
6 | Автор: Berestovskiy | 2012-01-15, 15:58   |  Репутация: [ + 211 ]
Это делается так, если ты первоначально знаешь количество цифр в числе, а если нет?
Ибо количество цифр в числе не дается, оно может быть любым...
Нужно как-то в цикл забивать для отделения или что?

Добавлено (15.01.12, 22:19)
---------------------------------------------
А потом-то легче, подсчитать количество единиц, поставить в начало, двоек, подставить, etc)

7 | Автор: Droopy | 2012-01-15, 22:19   |  Репутация: [ + 0 ]
для такого есть if или case :)
пишешь мол
if N<=99 then
Quote (Berestovskiy)
Получить первую цифру: N div 10 Получить вторую: N mod 10

и тд)


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
8 | Автор: Berestovskiy | 2012-01-16, 03:03   |  Репутация: [ + 211 ]
Просто мне кажется, что таким макаром для, допустим, десяти- пятнадцатизначных, не очень рационально))
9 | Автор: Droopy | 2012-01-16, 03:39   |  Репутация: [ + 0 ]
9 | Автор: Droopy | 2012-01-16, 03:39   |  Репутация: [ + 0 ]
Ну то ты загнул конечно)
В extended в паскале 10-значные максимум влазят)
Ну рационально или нет, главное, что решает)
Я на контестере каком-то делал, но там с помощью строк по-моему сделал, ну или с массивами, ну короче всё работает)


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
10 | Автор: Berestovskiy | 2012-01-16, 04:04   |  Репутация: [ + 211 ]
Дак массивом-то было бы куда проще, просто допустим я пропишу для десятизначных чисел код, а вводится число ну.. пятизначное, программа не оборвется на этом? хД
11 | Автор: Droopy | 2012-01-20, 08:49   |  Репутация: [ + 0 ]
11 | Автор: Droopy | 2012-01-20, 08:49   |  Репутация: [ + 0 ]
Да что ты говоришь?:D
Оборвётся, по этому и нужно ифами
Допустим:
if N<100 then
Quote (Berestovskiy)
Получить первую цифру:
N div 10
Получить вторую:
N mod 10

if N<1000 then

Quote (Berestovskiy)
Получить первую цифру:
N div 100
Получить вторую:
N div 10 mod 10
Третью:
N mod 10


И так сделать для случаев всех)


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
12 | Автор: Berestovskiy | 2012-01-20, 16:59   |  Репутация: [ + 211 ]
Хмм... вот оно как... забавно-с, а потом подсчитывать количество единиц, двоек и тд?
13 | Автор: Droopy | 2012-01-21, 10:05   |  Репутация: [ + 0 ]
Quote (Droopy)
а потом подсчитывать количество единиц, двоек и тд?

Зачем?
Сравниваешь числа между собой, и получаешь найбольшее или найменьшее число, всё просто:)
Допустим, число двузначное:
var
n:integer;
begin
read(n);
if n<100 then
if n div 10>n mod 10 then writeln(n div 10,n mod 10) else writeln(n mod 10,n div 10);
end.

Как-то так)


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
14 | Автор: Berestovskiy | 2012-01-21, 10:25   |  Репутация: [ + 211 ]
И все равно мне кажется, что есть другой способ... ибо код получается бесконечным (если увеличивать количество цифр) хД Но за совет спасибо)
15 | Автор: Droopy | 2012-01-22, 13:08   |  Репутация: [ + 0 ]
Ну бесконечным - врядли, нету такого типа, разве-что долгая арифметика)
Со строками я написал ещё год назад примерно, всё довольно просто)
Код будет большим, но зато рабочим, я ещё подумаю как можно организовать...


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
16 | Автор: Berestovskiy | 2012-01-22, 18:05   |  Репутация: [ + 211 ]


Нужна помощь? Сюда: vkontakte.ru/berestovskiy
16 | Автор: Berestovskiy | 2012-01-22, 18:05   |  Репутация: [ + 211 ]
Спасибо, бро, ты меня выручил)))
17 | Автор: Droopy | 2012-01-23, 04:13   |  Репутация: [ + 0 ]
"Спасибо" принимается в виде повышения репутации ( Зелёный плюсик:) ). Спасибо

Нужна помощь? Сюда: vkontakte.ru/berestovskiy
18 | Автор: Berestovskiy | 2012-01-23, 08:54   |  Репутация: [ + 211 ]
Блин, я думал, что уже поставил хДД
19 | Автор: Droopy | 2012-01-24, 13:40   |  Репутация: [ + 0 ]
ахахах))

Нужна помощь? Сюда: vkontakte.ru/berestovskiy
20 | Автор: Berestovskiy | 2012-01-24, 14:22   |  Репутация: [ + 211 ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: