Перейти к содержимому

Как отсортировать строку по алфавиту c

  • автор:

Как отсортировать строку по алфавиту 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, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.

ПРИМЕР: СОРТИРОВКА СТРОК

Возьмем реальную задачу сортировки строк в алфавитном порядке. Эта задача может возникнуть при подготовке списка фамилий, при создании алфавитного указателя и во многих других ситуациях. В такой программе одним из главных инструментов является функция strcmp( ), так как ее можно использовать для определения старшинства двух строк. Последовательность наших действий будет состоять из считывания массива строк, их сортировки и последующего вывода. Совсем недавно мы показали последовательность действий для считывания строк, и сейчас мы начнем программу таким же образом.

/* считывает строки и сортирует их */

#define SIZE 81 /* предельная длина строки, включая */

#define LIM 20 /* максимальное количество считываемых строк */

#define HALT » » /* нулевая строка для прекращения ввода */

static char input[LIM][SIZE]; /* массив для запоминания вводимых строк */

char *ptstr[LIM]; /* массив переменных типа указатель */

int ct = 0; /* счетчик вводимых строк */

int k; /* счетчик выводимых строк */

printf(» Введите до %d строк и я их отсортирую. » , LIM);

printf(» Для прекращения ввода нажмите клавишу [ввод] в начале строки. «);

while((gets(input[ct])!= NULL) && strcmp(input[ct], HALT)

ptstr[ct — 1] = input[ct — 1]; /*указывает на еще не

stsrt(ptstr, ct); /* сортировка строк */

puts(» Вот отсортированный список строк: «);

puts(ptstr[k]); /* указатели на отсортированные строки */

if(strcmp(strings[top], strings[seek]) > 0)

strings [top] = strings [seek];

strings [seek] = temp;

РИС. 13.4. Программа чтения и сортировки строк.

Вывод строк на печать не составляет проблемы, а для сортировки можно взять тот же алгоритм, который использовался раньше для чисел. Сейчас мы применим один хитрый трюк: посмотрим, сможете ли вы его заметить.

Для проверки возьмем детский стишок.

Введите 20 строк, и я их отсортирую.

Для прекращения ввода нажмите клавишу [ввод] в начале строки.

Жил на свете человек

И гулял он целый век

По скрюченной дорожке

Вот отсортированный список строк

Жил на свете человек

И гулял он целый век

По скрюченной дорожке

Детские стишки не кажутся слишком искаженными после сортировки их по алфавиту.

Трюк состоит в том что вместо перегруппировки самих строк мы перегруппировали их указатели. Разберемся в этом. В начале ptrst[0] ссылается на input[0] и т. д. Каждый input[ ] является массивом из 81 элемента, а каждый элемент ptrst[ ] является отдельной переменной. Процедура сортировки перегруппировывает ptrst, нe трогая input. Если, например, input[l] стоит перед input[0] по алфавиту, то программа переключает указатели ptrst, в результате чего ptrst[0] ссылается на input[1], a ptrst[1] на input[0]. Это гораздо легче, чем, используя strcpy( ), менять местами две введенные строки. Просмотрите еще раз этот процесс на рисунке.

И наконец, давайте попытаемся заполнить пробелы, оставшиеся в нашем описании, а именно «пустоту» между скобками в функции main( ).

Читайте также

6.2.1.1. Пример: сортировка сотрудников

6.2.1.1. Пример: сортировка сотрудников Для более сложных структур требуются более сложные функции. Например, рассмотрите следующую (довольно тривиальную) struct employee:struct employee ;Мы могли бы написать функцию для сортировки сотрудников по

Сортировка

Сортировка В отличие от предыдущих версий в Проводнике Windows Vista заголовки столбцов, с помощью которых можно проводить сортировку объектов и другие действия, доступны при любом способе отображения значков.Щелчком кнопки мыши на заголовке любого столбца вы можете

Пример: передача текстовых строк между клиентом и сервером

Пример: передача текстовых строк между клиентом и сервером Изменим наш сервер так, чтобы он, по-прежнему принимая текстовую строку от клиента, предполагал, что строка содержит два целых числа, разделенных пробелом, и возвращал сумму этих чисел. Функции main наших клиента и

Сортировка

Сортировка Трудности? Это еще что такое? Однако бесплатный сыр сами знаете где. Дело в том, что, так как сами элементы в списке не хранятся, придется самим заботится о сортировке. Не удастся воспользоваться функцией CListCtrl::SortItems, бесполезно писать CompareItems и т.п. Все, что у вас

13.5. Сортировка локализованных строк

13.5. Сортировка локализованных строк ПроблемаИмеется последовательность строк, содержащая символы не в коде ASCII, и требуется ее отсортировать с учетом местных особенностей.РешениеВ класс локализации встроена поддержка операций сравнения символов в заданной

Поиск и сортировка

Поиск и сортировка Следующие библиотечные функции предназначены для поиска и сортировки в массиве: Функция Краткое описание bsearch выполняет двоичный поиск lfind выполняет линейный поиск для заданного значения lsearch выполняет линейный поиск для заданного значения,

Пример 10-27. Простой пример сравнения строк

Пример 25-6. Старая, добрая: «Пузырьковая» сортировка

Пример 25-6. Старая, добрая: «Пузырьковая» сортировка #!/bin/bash# bubble.sh: «Пузырьковая» сортировка.# На каждом проходе по сортируемому массиву,#+ сравниваются два смежных элемента, и, если необходимо, они меняются местами.# В конце первого прохода, самый «тяжелый» элемент

Сортировка

Сортировка При преобразовании документа элементами xsl:for-each и xsl:apply-templates, выбранные узлы по умолчанию обрабатываются в порядке просмотра документа, который зависит от выражения, использованного в атрибуте select этих элементов. XSLT позволяет изменять этот порядок

11.1.10. Сортировка с отбрасыванием повторяющихся строк

11.1.10. Сортировка с отбрасыванием повторяющихся строк Иногда приходится иметь дело с файлом, содержащим повторяющиеся строки. Чтобы избавиться от них, достаточно воспользоваться командой sort с опцией — и. Ниже показан вариант тестового файла, в котором запись о фильме «Alien»

Сортировка строк по алфавиту. Как это подробно работает?

marlaaa, неправильно понял. j — это слова. Два вложенных цикла по словам — это сортировка пузырьком.

Как компилятор понимает какая буква больше?

Каждая буква представлена своим кодом. Обычно это ASCII-код. Больше та буква у которой больше код.
marlaaa @marlaaa Автор вопроса
jcmvbkbc, А зачем два цикла по словам?

зачем два цикла по словам?

marlaaa, потому что за один проход внутреннего цикла только один «пузырёк» (максимальное слово в неотсортированной части массива) «всплывает» (перемещается в конец, на своё окончательное место).
См, например, https://habr.com/ru/post/204600/

marlaaa @marlaaa Автор вопроса
jcmvbkbc, т.е когда мы сравниваем слова мы сравниваем и все буквы в слове по очереди?

когда мы сравниваем слова мы сравниваем и все буквы в слове по очереди?

marlaaa, да, до первой неравной пары. См.
Решения вопроса 0
Ответы на вопрос 0
Ваш ответ на вопрос

Войдите, чтобы написать ответ

cpp

  • C++

Не могу, понять как компьютер перемещает свой знак?

  • 1 подписчик
  • 19 часов назад
  • 90 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *