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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2011, 09:23   #1
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию сортировка массива символов

академическая задача, сам таким уже сто лет не занимался.
нужно написать функцию сортировки массива символов, причем использовать только указатели на символы. функцию я написал, вот код:
Код:
void string_sort ( char massiv[], int N )
{
	massiv[strlen(massiv)] = '\0';
	char* indexmin = massiv;
	for ( char* i = massiv; i != '\0'; ++i, ++indexmin )
	{
		for ( char* j = indexmin + 1; j != '\0'; ++j )
		{
			if ( *j > *indexmin )
			{ indexmin = j; };
		};

		if( indexmin != i )
		{
			char* tmp = new char;
			tmp = indexmin;
			indexmin = i;
			i = tmp;
		};
	};
};
с массивом чисел работает верно, а если с символами, то поему то не видит символ конца строки '\0' ну и вылетает за массив естественно. что не так?
Kukurudza вне форума Ответить с цитированием
Старый 08.08.2011, 10:07   #2
Granus
С++
Форумчанин
 
Аватар для Granus
 
Регистрация: 22.09.2008
Сообщений: 791
По умолчанию

for ( char* i = massiv; *i != '\0'; ++i, ++indexmin )
Форматируйте код, будьте людьми.
Granus вне форума Ответить с цитированием
Старый 08.08.2011, 13:05   #3
pproger
C++ hater
СтарожилДжуниор
 
Аватар для pproger
 
Регистрация: 19.07.2009
Сообщений: 3,333
По умолчанию

Код:
massiv[strlen(massiv)] = '\0';
глупость
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay

My other car is cdr.

Q: Whats the object-oriented way to become wealthy?
A: Inheritance
pproger вне форума Ответить с цитированием
Старый 09.08.2011, 08:26   #4
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

for ( char* j = indexmin + 1; *j != '\0'; ++j )

P.S. Удивительно, код маленький, а уже пол часа не могу понять идеи!

Последний раз редактировалось 8Observer8; 09.08.2011 в 08:38.
8Observer8 вне форума Ответить с цитированием
Старый 09.08.2011, 08:47   #5
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Идея проста. Если не поставить это звездочку, тогда вы адрес указателе сравниваете с символом. Если поставить - вы разыменовываете указатель и уже то что лежит по этому адресу (а именно элемент массива) сравниваете тоже с символом.
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 09.08.2011, 09:18   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

Нет! Это я понимаю, конечно. Мне идея алгоритма сортировки не понятна.

Я подозреваю, что это не весь алгоритм, а только его часть.

Последний раз редактировалось 8Observer8; 09.08.2011 в 09:40.
8Observer8 вне форума Ответить с цитированием
Старый 09.08.2011, 10:17   #7
Kukurudza
Форумчанин
 
Регистрация: 02.06.2011
Сообщений: 282
По умолчанию

сортировка выбором. алгоритм исправил. вот:
Код:
void string_sort ( char massiv[] )
{
	char* indexmin = massiv;
	for ( char* i = massiv; *i != '\0'; ++i, ++indexmin )
	{
		indexmin = i;
		for ( char* j = indexmin + 1; *j != '\0'; ++j )
		{
			if ( *j < *indexmin )
			{ indexmin = j; };
		};

		if( indexmin != i )
		{
			char tmp = *indexmin;
			*indexmin = *i;
			*i = tmp;
		};
	};
};
Kukurudza вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СИ, вывод массива символов ray13 Помощь студентам 7 16.09.2020 07:49
Сортировка массива методами предсортировки и слияния, и пирамидальная сортировка. lenny_24 Помощь студентам 2 17.04.2011 18:57
[Fortran] Сортировка символов в определенном порядке abit-2010 Помощь студентам 0 19.03.2011 18:06
Сортировка массива символов(Turbo Pascal 7.0)) Rankin Помощь студентам 4 12.01.2010 17:02