Ребятушки, помогите в Паскале начертать задачу
|
|
Вводится число n переставить его цифры, что бы получилось наибольшее (или наименьшее) число. Не использовать строки и массивы.
|
|
|
Ограничения на ввод есть какие-то?
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Неа, любое число, ну в разумных пределах, наверное)
|
|
|
нужно думать..
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Там самое сложное это цифры отделить друг от друга, а потом сравнивать просто с единицей, двойкой и тд
|
|
|
Цифры отделить это как раз самое лёгкое :) Самое тяжкое - узнать какое число на самом деле по величине А так: Если число двузначное: Получить первую цифру: N div 10 Получить вторую: N mod 10 Если трёхзначное, то Получить первую цифру: N div 100 Получить вторую: N div 10 mod 10 Третью: N mod 10 Ну и так далее)
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Это делается так, если ты первоначально знаешь количество цифр в числе, а если нет? Ибо количество цифр в числе не дается, оно может быть любым... Нужно как-то в цикл забивать для отделения или что?Добавлено (15.01.12, 22:19) --------------------------------------------- А потом-то легче, подсчитать количество единиц, поставить в начало, двоек, подставить, etc)
|
|
|
для такого есть if или case :) пишешь мол if N<=99 thenQuote (Berestovskiy) Получить первую цифру: N div 10 Получить вторую: N mod 10 и тд)
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Просто мне кажется, что таким макаром для, допустим, десяти- пятнадцатизначных, не очень рационально))
|
|
|
Ну то ты загнул конечно) В extended в паскале 10-значные максимум влазят) Ну рационально или нет, главное, что решает) Я на контестере каком-то делал, но там с помощью строк по-моему сделал, ну или с массивами, ну короче всё работает)
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Дак массивом-то было бы куда проще, просто допустим я пропишу для десятизначных чисел код, а вводится число ну.. пятизначное, программа не оборвется на этом? хД
|
|
|
Да что ты говоришь?: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
|
|
|
Хмм... вот оно как... забавно-с, а потом подсчитывать количество единиц, двоек и тд?
|
|
|
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
|
|
|
И все равно мне кажется, что есть другой способ... ибо код получается бесконечным (если увеличивать количество цифр) хД Но за совет спасибо)
|
|
|
Ну бесконечным - врядли, нету такого типа, разве-что долгая арифметика) Со строками я написал ещё год назад примерно, всё довольно просто) Код будет большим, но зато рабочим, я ещё подумаю как можно организовать...
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Спасибо, бро, ты меня выручил)))
|
|
|
"Спасибо" принимается в виде повышения репутации ( Зелёный плюсик:) ). Спасибо
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|
Блин, я думал, что уже поставил хДД
|
|
|
ахахах))
Нужна помощь? Сюда: vkontakte.ru/berestovskiy
|
|
|