Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.128.199.162] |
|
Сообщ.
#1
,
|
|
|
Задача такая, нужно отсортировать массив фамилий. Элементы массива типа char.
Точнее, не могу разобраться с помощью каких условий выбирать элементы... HELP! |
Сообщ.
#2
,
|
|
|
по алфавиту?
ну тогда ты наверное пользуешь массив указателей на char-ы? угадал? Если фамилия гарантировано начинается на заглавную букву, то коды букв идут в возрастающем порядке. точные цифры не помню, глянь таблицу ascii символов; ты просто сортируешь записи в порядке возрастания - сначала по первой букве, потом (пока не встретишь следующую) по второй буквы.. и т.д. используй это свойство - в алфавитном порядке коды букв возрастают. Продолжать? |
Сообщ.
#3
,
|
|
|
К примеру, можно так
#include <stdio.h> #include <stdlib.h> #include <string.h> void sort(char *arr[], int size) { char* tmp; for (int i = 0; i < size; i++) for (int j = 0; j < size; j++) if (strcmp(arr[i], arr[j]) < 0) { tmp = arr[i]; arr[i] = arr[j]; arr[j] = tmp; } } void main() { char *str[] = {"abdh", "acdg", "acba", "abcd", "abce"}; sort(str, 5); for (int i = 0; i < 5; i++) printf("%s\n", str[i]); } |
Сообщ.
#4
,
|
|
|
Наверно проще всёж так:
qsort( array, size_array, sizeof( char*), strcmp); |
Сообщ.
#5
,
|
|
|
Цитата AlexSm @ 29.12.03, 08:23 Наверно проще всёж так: qsort( array, size_array, sizeof( char*), strcmp); Ага действитеьно что ж может проще быть слова qsort 2 Dalet:А если будет например строка "aahaр" и "aaha".И алгоритм не работает . 2 Gohst: Можно использовать опять же тот же qsort только брать в качестве элемента сравнения первые четыре буквы строки.Или как я когда то делал:cортируеш строки по первой букве qsort-ом,выделяеш массив из превых отсартированных символов сортируеш их.В итоги все реализуется двумя рекурсивными функциями. |
Сообщ.
#6
,
|
|
|
Цитата Zveruga @ 29.12.03, 21:54 2 Dalet:А если будет например строка "aahaр" и "aaha".И алгоритм не работает . Сам-то понял, чего сказал? |
Сообщ.
#7
,
|
|
|
#include <algorithm> bool strless(const char* elem1,const char* elem2 ) { return strcmp(elem1,elem2)<0; } void main() { char *str[] = {"abdh", "acdg", "acba", "abcd", "abce", 0}; std::sort(str, 0, strless); } |
Сообщ.
#8
,
|
|
|
Цитата Dalet @ 29.12.03, 19:30 Цитата Zveruga @ 29.12.03, 21:54 2 Dalet:А если будет например строка "aahaр" и "aaha".И алгоритм не работает . Сам-то понял, чего сказал? Бррр sorry клеманула . Одно что работать будет не слишком быстро |