0 / 0 / 0
Регистрация: 11.04.2021
Сообщений: 3
1

Отсортировать слова в строке по алфавитному порядку

11.04.2021, 01:09. Показов 2005. Ответов 8
Метки c++ (Все метки)

Доброго вечера, меня зовут Александр!
Проблема состоит в том, что я не понимаю
как возможно отсортировать слова в строке по алфавитному порядку.

Как должен работать код по моему мнению:
- Сперва ввод слов в консоль (например, вводим: accb gfd bcafg)
- Каким то "волшебным" образом отсортировалась каждая буква в слове
- А в конце должно вывести эту же фразу,
только вместо "accb gfd bcafg" - должно вывести каждое
отсортированное слово - "abcc dfg abcfg"

Всё, чего мне удалось добиться:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <algorithm>
#include <sstream>
#include <string>
#include <iostream>
 
using std::string;
using std::sort;
using std::istringstream;
using std::ostringstream;
 
using namespace std;
 
int main()
{
    istringstream input;
    string word;
    ostringstream output;
    cin >> input;
    while(!input.eof()){
        input >> word;
        sort(word.begin(), word.end());
        output << word << " ";
    }
   cout << word;
}
Прошу подойти к моей просьбе о помощи с пониманием и добротой.
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.04.2021, 01:09
Ответы с готовыми решениями:

Отсортировать слова в данной строке в порядке, обратном алфавитному (qsort), и посчитать число слов с первой гласной
Здравствуйте! Нужно написать программу, которая сортирует слова в данной строке в порядке,...

Отсортировать массив символьных строк по алфавитному порядку?
не могу написать эту задачу. каким образом можно эту задачу написать?? { Отсортировать массив...

Расставить слова по алфавитному порядку
Товарищи помогите написать прогу)) Пользователь вводит в строку 2 слова, нужно расставить эти...

В строке по алфавитному порядку расставить символы! Очень нужно!
Дана строка. Напечатать в алфавитном порядке все слова из заданной строки, имеющие длину n ....

8
7415 / 5011 / 2889
Регистрация: 18.12.2017
Сообщений: 15,694
11.04.2021, 03:28 2
Лучший ответ Сообщение было отмечено FiFTiFiFTi как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
 
int main() 
{    
    string s = "orange apple lemon", word;
    
    vector<string> v;
    
    stringstream words(s);    
    while (words >> word) 
    {
        v.push_back(word);
    }
 
    sort(v.begin(), v.end());
    
    s="";
    
    for (string e : v)    
        s+=e+ ' ';     
       
    s.pop_back();   
    
    cout << s << "\n";
 
system("pause");
return 0;
}
0
0 / 0 / 0
Регистрация: 11.04.2021
Сообщений: 3
11.04.2021, 13:48  [ТС] 3
Yetty, Вложение 1243386
Вылазит ошибка...
Миниатюры
Отсортировать слова в строке по алфавитному порядку  
0
7415 / 5011 / 2889
Регистрация: 18.12.2017
Сообщений: 15,694
11.04.2021, 14:08 4
FiFTiFiFTi, у Вас старая версия C++98, обновите:
Как включить в своей среде разработки поддержку определённого стандарта (С++11, С++14, С++17)
0
Модератор
Эксперт С++
12086 / 9762 / 5905
Регистрация: 18.12.2011
Сообщений: 26,207
11.04.2021, 15:20 5
Лучший ответ Сообщение было отмечено FiFTiFiFTi как решение

Решение

Вот версия для VS 2008
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
#include <vector>
using namespace std;
 
int main() 
{    
    string s = "orange apple lemon", word;
 
    vector<string> v;
 
    stringstream words(s);    
    while (words >> word) 
        v.push_back(word);
 
    sort(v.begin(), v.end());
 
    s="";
    for (size_t i=0;i<v.size();i++)    
        s+=v[i]+ ' ';     
 
    s.erase(s.end()-1,s.end());   
    cout << s << "\n";
 
    system("pause");
    return 0;
}
Вместо вектора можно использовать контейнер multiset.
Тогда сортировать не придется:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <algorithm>
#include <string>
#include <sstream>
#include <set>
using namespace std;
 
int main() 
{    
    string s = "orange apple lemon", word;
 
    multiset<string> v;
 
    stringstream words(s);    
    while (words >> word) 
        v.insert(word);
 
    s="";
    multiset<string>::iterator p;
    for (p=v.begin();p!=v.end();++p)    
        s+=*p+ ' ';     
 
    s.erase(s.end()-1,s.end());   
    cout << s << "\n";
 
    system("pause");
    return 0;
}
0
0 / 0 / 0
Регистрация: 11.04.2021
Сообщений: 3
11.04.2021, 15:34  [ТС] 6
zss, Код правда работает, всё отлично. Но задание у меня иного типа.
Нужно, чтобы отсортировались сами слова в строке "orange apple lemon"
Результат должен быть примерно такой: aegnor aelpp elmno.

Прошу прощения, что доставляю неприятности..
0
7415 / 5011 / 2889
Регистрация: 18.12.2017
Сообщений: 15,694
11.04.2021, 15:50 7
Цитата Сообщение от zss Посмотреть сообщение
s.erase(s.end()-1,s.end());
лишний вызов функции, достаточно
C++
1
s.erase(s.end()-1);
Добавлено через 5 минут
FiFTiFiFTi, код написан под Ваше задание:
Цитата Сообщение от FiFTiFiFTi Посмотреть сообщение
Отсортировать слова в строке по алфавитному порядку
если у Вас задание "иного типа", создайте новую тему и напишите оригинал условия задачи

Вы подключили более новую версию С++ ?
0
Модератор
Эксперт С++
12086 / 9762 / 5905
Регистрация: 18.12.2011
Сообщений: 26,207
11.04.2021, 15:58 8
Цитата Сообщение от FiFTiFiFTi Посмотреть сообщение
Результат должен быть примерно такой: aegnor aelpp elmno.
А почему Вы не можете самостоятельно объединить сортировку из Вашего кода (которая сортирует символы в строке)
и предложенную сортировку строк.:
C++
1
2
3
4
5
6
7
stringstream words(s);    
    while (words >> word) 
    {
        sort(word.begin(),word.end());
        v.insert(word);
    }
    sort(v.begin(), v.end());
0
7415 / 5011 / 2889
Регистрация: 18.12.2017
Сообщений: 15,694
11.04.2021, 16:06 9
zss, ТС нужно отсортировать слова, а не буквы в словах
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2021, 16:06
Помогаю со студенческими работами здесь

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

В заданной строке расположить слова в порядке обратном алфавитному
Надо написать на TASM программу, которая в заданной строке располагает слова в порядке обратном...

Сортировка по алфавитному порядку
Пытаюсь подстроить сортировку магазина по алфавитному порядку - не читает и, конечно, не выводит. ...

Упорядочивание по порядку обратному алфавитному
По заданию надо проверить, упорядочены ли в порядке обратном алфавитному элементы файла t. Я тут...

Распределение ряда слов по алфавитному порядку
Здравствуйте! Столкнулся с данной задачей темы строковый тип: &quot;Дана последовательность, содержащая...

Вывести студентов 2 года обучения, упорядоченных по алфавитному порядку
Почему когда я ввожу 1 студента все нормально работает , когда 2 выдает что нету студентов 1 года...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru