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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2010, 20:01   #1
Progsenya
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 80
По умолчанию Ошибка с алгоритмом Sort

Код:
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
char *name[]={"Alex","Max","Nasty","Ksenya"};
bool Alpha_comp(char* s1,char* s2)
{
	
	return(strcmp(s1,s2)<0)?true:false;
}


void main()
{
	vector<char>name;
	vector<char>::iterator it;
	sort(name.begin(),name.end(),Alpha_comp);
	for(it=name.begin();it!=name.end();it++)
	{
		cout<<*it<<endl;
	}



}
не пойму в чем дело кто может подскажите как реализовать сортировку
Progsenya вне форума Ответить с цитированием
Старый 07.09.2010, 20:14   #2
ThisIzGame
Форумчанин
 
Регистрация: 31.08.2009
Сообщений: 161
По умолчанию

если хотите отсортировать vector<char>name, тогда измените так
vector<char*> name и vector<char>::iterator it; на vector<char*>::iterator it;
Или можно это оставить, тогда придётся в Alpha_comp у параметров убрать указатели, а то у вас какое-то разногласие, name хранит элементы типа char, а Alpha_comp ожидает указатели на char
ThisIzGame вне форума Ответить с цитированием
Старый 07.09.2010, 20:15   #3
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Для начала:
Код:
bool Alpha_comp(char* s1,char* s2)
{
	
	return (strcmp(s1,s2)<0);
}
А затем:
Код:
char *name[]={"Alex","Max","Nasty","Ksenya"};
bool Alpha_comp(char* s1,char* s2)
{
	
	return(strcmp(s1,s2)<0)?true:false;}


void main()
{
	vector<char*>name;
	name.Add(::name[0]);
	name.Add(::name[1]);
	// и далее в том же духе ...

	vector<char*>::iterator it;
	sort(name.begin(),name.end(),Alpha_comp);
	for(it=name.begin();it!=name.end();it++)
	{
		cout<<*it<<endl;
	}



}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 07.09.2010, 20:35   #4
Progsenya
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 80
По умолчанию

ошибку исправил но есть еще одна проблема
Код:
for(it=name.begin();it!=name.end();it++)
	{
		cout<<*it<<endl;
	}
на экран нечего не выводит
Progsenya вне форума Ответить с цитированием
Старый 07.09.2010, 21:11   #5
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

В смысле он в цикл не заходит или просто ничего не пишет?
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 07.09.2010, 21:33   #6
Progsenya
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 80
По умолчанию

на экран ничего не выводит
Progsenya вне форума Ответить с цитированием
Старый 07.09.2010, 22:18   #7
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

У меня все работает, что удивителтно, даже правильно:
Код:
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
char *name[]={"Alex","Max","Nasty","Ksenya"};
bool Alpha_comp(char* s1,char* s2)
{
	
	return (strcmp(s1,s2)<0);
}


void main()
{
	vector<char*>name;
	name.push_back(::name[0]);
	name.push_back(::name[1]);
	name.push_back(::name[2]);
	name.push_back(::name[3]);

	vector<char*>::iterator it;
	::sort(name.begin(),name.end(),Alpha_comp);
	for(it=name.begin();it!=name.end();it++)
	{
		cout<<*it<<endl;
	}



}
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Старый 07.09.2010, 22:56   #8
Progsenya
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 80
По умолчанию

немного не понял синтактически зачам перед sort "::"?
Progsenya вне форума Ответить с цитированием
Старый 07.09.2010, 22:57   #9
Progsenya
Пользователь
 
Регистрация: 30.05.2010
Сообщений: 80
По умолчанию

спасибо большое за помощь есть еще вопросик я не понял немного синтактически зачем перед Sort :: ставить?
Progsenya вне форума Ответить с цитированием
Старый 08.09.2010, 18:37   #10
Syuf
Форумчанин
 
Аватар для Syuf
 
Регистрация: 02.02.2010
Сообщений: 599
По умолчанию

Незачем, просто в IntelliSense (в Visual Studio) тогда начинают отображаться все глобальные функции.
"Лишь то читается легко, что написано с трудом; что в час написано, то в час и позабыто."
Syuf вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TList->Sort ongleb Общие вопросы C/C++ 0 12.03.2010 14:58
Вопрос насчет функции sort TOLIK111 Общие вопросы C/C++ 1 06.12.2009 15:57
трассировка алгоритма Quick Sort bfm89 Помощь студентам 6 27.11.2009 14:38
C++: Портотип функции sort Crazy_caramel Помощь студентам 4 26.11.2009 23:17
(STL LIST SORT) Сортировка по некольким критериям htatsu Общие вопросы C/C++ 4 19.07.2009 01:44