Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.09.2016, 00:05   #1
CaBuHoB
Пользователь
 
Регистрация: 15.09.2016
Сообщений: 13
По умолчанию распределить слова в алфавитном порядке

Я не знаю, как распределить слова в алфавитном порядке, объясните, пожалуйста)
А задание такое:

Ввести строку, вывести слова по алфавиту.
CaBuHoB вне форума Ответить с цитированием
Старый 16.09.2016, 00:21   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Сравнивать (два слова) по первой букве, если они равны, то по второй и т.д.

Стандартная операция сравнения строк (типа str1 < str2, или strcmp в С) в большинстве языков программирования вроде бы это и делает.

Останется только засунуть это сравнение двух слов в любой алгоритм сортировки https://ru.wikipedia.org/wiki/%D0%90...B2.D0.BA.D0.B8, либо самостоятельно реализованный, либо какой-нибудь qsort из стандартной библиотеки языка.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.09.2016, 00:47   #3
Максай
Пользователь
 
Аватар для Максай
 
Регистрация: 21.07.2008
Сообщений: 40
По умолчанию

Цитата:
Сообщение от CaBuHoB Посмотреть сообщение
Я не знаю, как распределить слова в алфавитном порядке, объясните, пожалуйста)
А задание такое:

Ввести строку, вывести слова по алфавиту.
В С++ для этого есть функция std::sort(), которая по умолчанию сортирует как раз по алфавиту:
Код:
#include <algorithm>
#include <iostream>
#include <iterator>
#include <sstream>
#include <string>
#include <vector>

int main()
{
    // Считываем строку.
    std::string input_string;
    std::getline( std::cin, input_string );

    // Разбиваем на слова.
    std::istringstream iss( input_string );
    std::istream_iterator<std::string> begin( iss );
    std::istream_iterator<std::string> end;
    std::vector<std::string> words( begin, end );

    // Сортируем список слов.
    std::sort( words.begin(), words.end() );

    // Выводим список слов.
    for( std::vector<std::string>::iterator
         it = words.begin(); it != words.end(); it++ )
    {
        std::cout << *it << std::endl;
    }

    return 0;
}
Алгоритм может быть немного (или много) сложнее, если, например, слова разделяются не только пробелами, а ещё и знаками препинания, или в строке есть слова на русском и других языках, но принцип понятен, я думаю.

UPD: Вот описание функции sort() на русском. А вот вроде неплохой учебник по обобщёным алгоритмам (включая sort()).

Последний раз редактировалось Максай; 16.09.2016 в 01:04.
Максай вне форума Ответить с цитированием
Старый 16.09.2016, 09:24   #4
CaBuHoB
Пользователь
 
Регистрация: 15.09.2016
Сообщений: 13
По умолчанию

Спасибо большое!
CaBuHoB вне форума Ответить с цитированием
Старый 16.09.2016, 09:42   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вряд ли препод оценит если автор сразу после хеллоуворлдов и ввода чисел придет с векторами и итераторами

Вероятно требовалось просто реализовать какую-нибудь самую простую сортировку типа пузырьковой, а для разбиения строки на слова просто пройти ее в цикле добавляя слова в массив когда встретился пробел (или другой разделитель).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 16.09.2016, 14:49   #6
predefined
Форумчанин
 
Регистрация: 01.08.2016
Сообщений: 182
По умолчанию

Алгоритм:
Вводите строку, разбиваете её в массив слов(тоже строк) по разделителям слов(пробелы, запятые, точки, !? и тп).
Потом сортируете элементы массива стандартной встроенной функцией, или пишете её сами, если сортировка нестандартная.

В некоторых случаях необходимо устанавливать правильную "локаль" для требуемого языка(человеческого).
Иначе функции сортировки работают неправильно для слов немецкого/русского/китайского языков. Там коды букв идут не по порядку, как в английском языке.


PS: Отдельно подумать о цифрах: "Пётр 1" - цифра 1 тоже считается словом или нет.

Последний раз редактировалось predefined; 16.09.2016 в 14:53.
predefined вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Напечатать слова в алфавитном порядке. ilya0610 Общие вопросы C/C++ 0 24.01.2014 20:07
Даны слова из строч. русских букв,слова разделены запятыми. Напечатать в алфавитном порядке гласные,входящие в каждое слово(Delphi Галенька Помощь студентам 5 11.01.2012 20:49
Упорядочить слова в алфавитном порядке sasha45 Общие вопросы C/C++ 36 20.06.2011 11:03
Все слова входного потока вывести в алфавитном порядке lutuygrey1 Общие вопросы C/C++ 13 28.05.2009 01:31
Как расположить в алфавитном порядке слова,содержащиеся в файле? JiLiYa Паскаль, Turbo Pascal, PascalABC.NET 0 20.12.2008 13:58