Как отсортировать строку по алфавиту c
Условие: Дана строка слов разделенных запятыми, в конце строки точка.
Задача: Вывести на экран все слова остортированные в алфавитном порядке. (кириллицу можно не использовать)
Я знаю что можно как-то использовать функцию strcmp () но никак не могу разобраться как.
Вот мой вариант кода, но мне кажеться сильно замудренный от того и запутался наверное.
#include #include #include using namespace std; void filter(char *string, int n, int x, char **new_str) < for (int i=0, j=0;ielse < j++; continue; >> void main () < char *string = new char [100]; int x=0,n=0,y=0; gets(string); n = strlen (string); for (int i=0;ichar **new_str = new char* [x]; for (int i = 0; i filter (string,n,x,new_str); for (int i=0;i delete [] string; for (int i=0;i delete [] new_str; >
Прошу помочь с решением, если можно с небольшими комментариями для понимания.
Сортировка данных (C#)
Операция сортировки упорядочивает элементы последовательности на основе одного или нескольких атрибутов. Первый критерий сортировки выполняет первичную сортировку элементов. Указав второй критерий поиска, можно сортировать элементы внутри каждой группы первичной сортировки.
На следующем рисунке показаны результаты операции сортировки в алфавитном порядке в последовательности символов:

Далее перечислены методы стандартных операторов запроса, которые выполняют сортировку данных.
Методы
| Имя метода | Описание | Синтаксис выражения запроса C# | Дополнительные сведения |
|---|---|---|---|
| OrderBy | Сортировка значений в возрастающем порядке. | orderby | Enumerable.OrderBy |
Примеры синтаксиса выражений запросов
Примеры основной сортировки
Основная сортировка по возрастанию
В следующем примере показано использование предложения orderby в запросе LINQ для сортировки строк в массиве по длине строки в порядке возрастания.
string[] words = ["the", "quick", "brown", "fox", "jumps"]; IEnumerable query = from word in words orderby word.Length select word; foreach (string str in query) Console.WriteLine(str); /* This code produces the following output: the fox quick brown jumps */
Основная сортировка по убыванию
В следующем примере показано использование предложения orderby descending в запросе LINQ для сортировки строк по их первой букве в порядке убывания.
string[] words = ["the", "quick", "brown", "fox", "jumps"]; IEnumerable query = from word in words orderby word.Substring(0, 1) descending select word; foreach (string str in query) Console.WriteLine(str); /* This code produces the following output: the quick jumps fox brown */
Примеры дополнительной сортировки
Дополнительная сортировка по возрастанию
В следующем примере показано использование предложения orderby в запросе LINQ для выполнения основной и дополнительной сортировки строк в массиве. Строки сортируются основным образом по длине и дополнительно — по первой букве строки; в обоих случаях в возрастающем порядке.
string[] words = ["the", "quick", "brown", "fox", "jumps"]; IEnumerable query = from word in words orderby word.Length, word.Substring(0, 1) select word; foreach (string str in query) Console.WriteLine(str); /* This code produces the following output: fox the brown jumps quick */
Дополнительная сортировка по убыванию
В следующем примере показано использование предложения orderby descending в запросе LINQ для выполнения основной сортировки по возрастанию и дополнительной сортировки по убыванию. Строки сортируются основным образом по длине и дополнительно — по первой букве строки.
string[] words = ["the", "quick", "brown", "fox", "jumps"]; IEnumerable query = from word in words orderby word.Length, word.Substring(0, 1) descending select word; foreach (string str in query) Console.WriteLine(str); /* This code produces the following output: the fox quick jumps brown */
См. также
- System.Linq
- Общие сведения о стандартных операторах запроса (C#)
- предложение orderby
- Упорядочение результатов предложения соединения
- Практическое руководство. Сортировка или фильтрация текстовых данных по любому слову или полю (LINQ) (C#)
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Как отсортировать строки в алфавитном порядке в СИ?

Вот задание, которое я делаю:
Вот программа, которую я написал на данный момент:
#include #include #include struct price< char name[30]; char shop[30]; char product_price[10]; >; int main() < struct price product[8]; char check[30]; int i, compare_limit = 30; char memory[30]; //Ввод информации в структуру с товарами for( i = 0; i < 2; i++ )< printf("Enter product %d NAME:\n", i); fgets( product[i].name, 30, stdin ); /*printf("Enter product %d SHOP:\n", i); fgets( product[i].shop, 30, stdin ); printf("Enter product %d PRICE:\n", i); fgets( product[i].product_price, 10, stdin );*/ >for( i = 0; i < 2; i++)< if(product[i+1].name >product[i].name) < strcpy(memory, product[i].name); strcpy(product[i].name, product[i+1].name); strcpy(product[i+1].name, memory); >> for( i = 0; i < 2; i++ )< printf("%s\n", product[i].name); >//Вывод информации о товаре по его имени while ( 1 ) < printf("You can get information about any product by enter it's name:\n"); fgets( check, 30, stdin ); for( i = 0; i < 2; i++ )< if( strncmp(check, product[i].name, compare_limit) == 0 )< printf("Product %d NAME is: %s", i, product[i].name); printf("Product %d SHOP is: %s", i, product[i].shop); printf("Product %d PRICE is: %s", i, product[i].product_price); >> > return 0; >
Вроде-бы я всё реализовал (скорее всего не очень грамотно), кроме сортировки записей в алфавитном порядке. Я не знаю, правильно ли я сравниваю строки и какой принцип сравнения у них вообще (А > a, б < а, Б >a). подскажите пожалуйста, как всё это работает и как мне отсортировать строки?
- Вопрос задан более трёх лет назад
- 6090 просмотров
2 комментария
Оценить 2 комментария
Сортировка слов по алфавиту СИ
Всё очень просто. Используем стандартную С-шную функцию qsort:
ОПИСАНИЕ Функция qsort() сортирует массив из nmemb размером size. Аргумент base указывает на начало массива.
Содержимое массива сортируется в соответствии с функцией сравнения, на которую ссылается compar, вызываемой вместе с двумя аргументами, которые ссылаются на сравниваемые объекты. Функция сравнения должна вернуть целое, меньшее, равное и большее нуля для случаев, когда первый аргумент меньше, равен или больше второго соответственно. Если оба элемента сравнения равны, порядок их сортировки в массиве не будет определен.
Вам даже не надо писать функцию сравнения — в стандартной библиотеке С уже есть функция сравнения строк:
Функция strcmp() сравнивает строки s1 и s2. При этом локаль не учитывается (для её учёта используйте функцию strcoll(3)). Она возвращает целое число, которое меньше, больше нуля или равно ему, если выяснится, что s1 меньше, равна или больше s2 соответственно.