Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2010, 17:29   #1
_FENDER_
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 26
Вопрос Задачу о сортировке цифр в числе.Язык С++.

Помогите пожалуйста решить задачу на Си.Условие задачи такое:
Дано натуральное число.Отсортировать цифры этого числа по возрастанию и убыванию.Вид сортировки задать.
_FENDER_ вне форума Ответить с цитированием
Старый 27.12.2010, 17:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Приведи функцией itoa() число в строку - массив символов, а потом сортировкой пузырьком (примеры обсуждались) отсортируй так и так.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.12.2010, 17:37   #3
_FENDER_
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 26
По умолчанию

если можно наглядный пример программы предоставьте..буду очень признателен..

и ещё подскажите, пожалуйста, можно ли решить эту задачу не используя массив символов???

Последний раз редактировалось Stilet; 27.12.2010 в 19:34.
_FENDER_ вне форума Ответить с цитированием
Старый 27.12.2010, 19:39   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не вопрос.
Загляни сюда: http://www.programmersforum.ru/showthread.php?t=70850
И сюда: http://www.programmersforum.ru/showthread.php?t=106270
Вот еще:http://www.cplusplus.com/reference/c.../cstdlib/itoa/
Цитата:
эту задачу не используя массив символов???
Да. По одной из ссылок Гром давал пример выделение цифр числа в цикле.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.12.2010, 19:57   #5
Kingdom_Reborn
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 130
По умолчанию

вот наглядный пример
Код:
void sort(long int &x, int v)
{
	long int y, z;
	y = x % 10;
	x /= 10;
	while (x != 0)
	{
		if (v == 1 && x % 10 >= y % 10 || v == 0 && x % 10 <= y % 10)
			y = y * 10 + x % 10;
		else
		{
			z = 0;
			while ((v == 1 && x % 10 < y % 10 || v == 0 && x % 10 > y % 10) && y > 0)
			{
				z = z * 10 + y % 10;
				y /= 10;
			}
			y = y * 10 + x % 10;
			while (z != 0)
			{
				y = y * 10 + z % 10;
				z /= 10;
			}
		}
		x /= 10;
	}
	x = y;
}
sort(x, 1) - сортировка по неубыванию, sort(x, 0) - по невозрастанию.

Последний раз редактировалось Kingdom_Reborn; 27.12.2010 в 20:05.
Kingdom_Reborn вне форума Ответить с цитированием
Старый 27.12.2010, 22:54   #6
_FENDER_
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 26
По умолчанию

спасибо огромное..очень помогли..))
_FENDER_ вне форума Ответить с цитированием
Старый 27.12.2010, 23:39   #7
_FENDER_
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 26
По умолчанию

#include<iostream.h>
main()
{
int y,z,x,v;
cout<<"\n Vvedite chislo x=";
cin>>x;
y=x%10;
x/=10;
while (x!=0)
{
if(v==1&&x%10>=y%10||v==0&&x%10<=y% 10)
y=y*10+x%10;
else
{
z=0;
while ((v==1&&x%10<y%10||v==0&&x%10>y%10) &&y>0)
{
z=z*10+y%10;
y/=10;
}
y=y*10+x%10;
while (z!=0)
{
y=y*10+z%10;
z/=10;
}
}
x/=10;
}
x=y;
}

Написал в таком виде..но почему то операторы не выполняются..подскажите кто нибудь нубу что не так..заранее спасибо
_FENDER_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сложение цифр в числе Onekey Помощь студентам 6 23.10.2010 17:21
Перестановка цифр в числе lisenog Помощь студентам 7 22.10.2010 01:33
Количество цифр в числе Zelenyi Общие вопросы C/C++ 8 18.06.2010 03:24
Сколько одинаковых цифр в числе Banderas123 Помощь студентам 16 08.12.2009 06:31