day & night

Сортировка строк на С++, Программирование
Дата обновления: , перейти к новому сообщению
icon14
#1
nvova



профи!
Group Icon

Группа: Наши Люди
Сообщений: 523
Регистрация: 10.01.2006
Из: СПб
Пользователь №: 104.042


Респектов: 154
-----X----




Имеется структура типа "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
User is offline
Go topGo end

Ответов(1 - 9)
14.05.2007 - 20:50
#2
yah



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 2.336
Регистрация: 27.01.2006
Из: рнд
Пользователь №: 500


Респектов: 408
-----XXX--




Что-то я не въеду вот в это:
CODE

strcmp((*(s*)a).rab
User is offline
Go topGo end
14.05.2007 - 20:57
#3
nvova



профи!
Group Icon

Группа: Наши Люди
Сообщений: 523
Регистрация: 10.01.2006
Из: СПб
Пользователь №: 104.042


Респектов: 154
-----X----




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

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

CODE

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

Только тут нет структуры
User is offline
Go topGo end
14.05.2007 - 21:00
#4
yah



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 2.336
Регистрация: 27.01.2006
Из: рнд
Пользователь №: 500


Респектов: 408
-----XXX--




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

strcmp(const char *, const char *)
User is offline
Go topGo end
14.05.2007 - 21:03
#5
nvova



профи!
Group Icon

Группа: Наши Люди
Сообщений: 523
Регистрация: 10.01.2006
Из: СПб
Пользователь №: 104.042


Респектов: 154
-----X----




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


Подскажи, плиз, тогда где я тупанул?
User is offline
Go topGo end
14.05.2007 - 21:03
#6
yah



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 2.336
Регистрация: 27.01.2006
Из: рнд
Пользователь №: 500


Респектов: 408
-----XXX--




Стоп, напиши нормально код, а то в первом случае в ретурне у тебя strcmp((*(s*)a).rab, а во втором strcmp((char *)a,(char *)cool.gif
User is offline
Go topGo end
14.05.2007 - 21:07
#7
nvova



профи!
Group Icon

Группа: Наши Люди
Сообщений: 523
Регистрация: 10.01.2006
Из: СПб
Пользователь №: 104.042


Респектов: 154
-----X----




Первый случай как у меня в программе. Второй случай просто найденный в мануале пример.
User is offline
Go topGo end
14.05.2007 - 21:14
#8
yah



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 2.336
Регистрация: 27.01.2006
Из: рнд
Пользователь №: 500


Респектов: 408
-----XXX--




я бы сделал так:
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;

}
User is offline
Go topGo end
14.05.2007 - 21:20
#9
nvova



профи!
Group Icon

Группа: Наши Люди
Сообщений: 523
Регистрация: 10.01.2006
Из: СПб
Пользователь №: 104.042


Респектов: 154
-----X----




Ок. Буду пробовать...
User is offline
Go topGo end
14.05.2007 - 21:23
#10
yah



профи!
[SoftoRooMTeaM] Group Icon

Группа: Наши Люди
Сообщений: 2.336
Регистрация: 27.01.2006
Из: рнд
Пользователь №: 500


Респектов: 408
-----XXX--




Только не забудь отписаться о результате.
User is offline
Go topGo end

Topic Options
Сейчас: 29.04.2024 - 0:59
Мобильная версия | Lite версия