2015-11-20 2 views
0

Я новичок в C++, и я попал в школьную задачу, чтобы сделать программу, которая сортирует строки в алфавитном порядке. Так может кто-нибудь объяснить мне, как я могу это сделать?C++ Алфавитно сортировочные строки

+0

Во-первых, вы получаете все строки. Собираетесь ли вы получить его от ввода или файла? Впоследствии вы должны увидеть, можете ли вы использовать std :: string или вам нужно использовать char array. Кроме того, проверьте, разрешено ли вам использовать std :: sort или если вам нужно выполнить сортировку самостоятельно. Так как вы на нем, проверьте, нужно ли хранить строку в массиве или, например, использовать std :: vector. – wendelbsilva

+0

Я должен вводить строки от пользователя в массиве, и у меня нет никаких ограничений. Это нужно только для правильной работы программы. –

+1

Сначала напишите программу, которая успешно открывает файл. Убедитесь, что он работает. Затем добавьте код для чтения строки из файла в цикле. Убедитесь, что он работает. Затем добавьте код для хранения каждой строки, считанной в массиве, убедитесь, что она работает. И т. Д. Вы сделали какие-либо из этих предварительных шагов? – PaulMcKenzie

ответ

-1

Строки сравниваются по буквам в порядке. Давайте вспомним, что строки в конце дня представляют собой массивы символов, и давайте вспомним также, что персонажи имеют числовое значение сами по себе, начиная от нижнего регистра «a» и заканчивая «Z», «a» самое низкое значение в алфавите и верхний регистр Z является самым высоким. Таким образом, за шторами при сравнении двух строк со сравнительными операторами вы сопоставляете друг другу два числовых значения, если они совпадают, тогда сравнение берется со следующей буквой в их строке. Например, «собака» будет помещена первыми, чем «кукла», если вы будете сортировать от самого низкого до самого высокого.

"dog" < "doll" //This will return true 

Теперь для сортировки, я бы порекомендовал вам взглянуть на методов сортировки в структур данных, или попытаться придумать один себе знать, как строки сравнения.

+0

Могу ли я сортировать их, как если бы (условие [i]

+0

Прочитайте комментарии к комментариям Crazy Eddie, он дает более глубокое понимание этого. – Darktega

0

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

Во-первых, вам нужно прочитать в строках, и хранить их в некотором роде:

  • строк (Достойный метод)
  • массивов (Вероятно, следует избегать их)
  • векторов (гораздо лучше альтернативы массивам)

Теперь вы можете использовать встроенную функцию зЬй :: сортировать (но я думаю, вы 'не разрешено используйте это как это домашнее задание) или напишите функцию сортировки по своему усмотрению.

Подумайте о том, как искать строку/массив/вектор для определенной буквы в алфавите («Поисковая строка для поиска в Google» содержит несколько методов) и рассмотрим эффекты прописных, строчных и пунктуационных знаков.

Основная проблема заключается в том, что компьютер не видит, что письмо приходит «до» другого - посмотрите, можете ли вы найти способ преобразования из символа в число (подсказка: используйте литье в сочетании с ASCII-таблица).

Вот и вся информация, которую я дам, удачи!

EDIT: Несколько слов о методах сортировки

Есть несколько основных методов сортировки:

  • BubbleSort - Переход через строку в порядке, меняя буквы, которые находятся в неправильном порядке. Повторите это снова и снова, пока строка не отсортирован
  • сортировка вставкой - для каждой буквы, поместите его в новый массив/строку/вектор в правильном месте
  • Quicksort - Разделить строку на две части, сравнить половинки, участки подкачки и повтор
1

Используйте std::sort (вторая версия) и напишите функцию сравнения, которая сравнивает символы в алфавитном порядке, а не лексикографически.Если это имеет дело с i18n/l10n, тогда эту функцию может быть сложнее записать.

+0

В чем разница между лексикографическим порядком и алфавитным порядком в строках? – moooeeeep

+1

@moooeeeep - лексикографическое сравнение основано на базовой кодировке - как правило, что-то основано на ASCII на английском языке. Это означает, что «z» предшествует «A» ... и все числа на самом деле. Сначала по алфавиту сначала ставятся числа, затем «a», затем «A», затем «b» и т. Д. –

Смежные вопросы