( Вход | Регистрация | Поиск )

Сортировка строк на С++, Программирование
Дата обновления: 13.12.2008 - 01:09, перейти к новому сообщению

·nvova
Группа: Наши Люди

Сообщений: 523
Имеется структура типа "s".
CODE

struct s
{
...
char rab[30];
...
};

Сортирую строки (qsort):
CODE
int compare(const void *a,const void *b)
{   return( strcmp((*(s*)a).rab,(*(s*)b).rab) );  }

Возник вопрос куда впихнуть "(char *)" или что-то вроде этого, чтоб чтоб не возникала ошибка:
cannot convert parameter from char to int.
Пробовал по всякому, но чего-то не выходит sad.gif


Ответов(1 - 9)

·yah
Группа: Наши Люди

Сообщений: 2.336
Что-то я не въеду вот в это:
CODE

strcmp((*(s*)a).rab



·nvova
Группа: Наши Люди

Сообщений: 523
strcmp
Собственно должна сравнивать 2 строки smile.gif

Делал по найденному примеру:

CODE

int compare( const void *a, const void *B)
{
  return( strcmp((char *)a,(char *)B) );
}

Только тут нет структуры


·yah
Группа: Наши Люди

Сообщений: 2.336
Если я не ошибаюсь, то прототип у этой функции такой:
CODE

strcmp(const char *, const char *)



·nvova
Группа: Наши Люди

Сообщений: 523
QUOTE(yah @ 14.05.2007 - 22:00)
Если я не ошибаюсь, то прототип у этой функции такой:


Подскажи, плиз, тогда где я тупанул?


·yah
Группа: Наши Люди

Сообщений: 2.336
Стоп, напиши нормально код, а то в первом случае в ретурне у тебя strcmp((*(s*)a).rab, а во втором strcmp((char *)a,(char *)cool.gif


·nvova
Группа: Наши Люди

Сообщений: 523
Первый случай как у меня в программе. Второй случай просто найденный в мануале пример.


·yah
Группа: Наши Люди

Сообщений: 2.336
я бы сделал так:
CODE

#include <cstring>


struct s
{
char rab[30];
}my,my1;

int compare(const s* struct1, const s* struct2);



int main()
{
int a=compare(&my,&my1);
return 0;
}



int compare(const s* struct1,const s* struct2)
{
int result;
result=strcmp(struct1->rab,struct2->rab);
return result;

}



·nvova
Группа: Наши Люди

Сообщений: 523
Ок. Буду пробовать...


·yah
Группа: Наши Люди

Сообщений: 2.336
Только не забудь отписаться о результате.