Форум программистов, компьютерный форум CyberForum.ru

Сортировка по гласным, согласным и возрастание букв в слове - C++

Восстановить пароль Регистрация
 
-ExotiC-
1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 29
19.05.2013, 17:25     Сортировка по гласным, согласным и возрастание букв в слове #1
Помогите пожалуйста решить задачу.

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

Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.05.2013, 17:25     Сортировка по гласным, согласным и возрастание букв в слове
Посмотрите здесь:

Замена букв в слове C++
C++ подсчет букв во втором слове
C++ Сортировка букв в слове
Количество различных букв в слове C++
Подсчет кол-ва букв в слове C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
19.05.2013, 20:42     Сортировка по гласным, согласным и возрастание букв в слове #2
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <cctype>
#include <algorithm>
 
using namespace std;
 
//-----------------------------------------------------------------------------
void Split(const string& text, vector<string>& a, vector<string>& b)
{
   const string CChars = "aeiouy";
   stringstream ss;
   ss << text;
   string word;
 
   while (ss >> word)
   {
      if (CChars.find_first_of(tolower(word[0])) != string::npos)
      {
         a.push_back(word);
      }
      else
      {
         b.push_back(word);
      }
   }
}
//-----------------------------------------------------------------------------
bool ForSort(const string& a, const string& b)
{
   return (a.size() <= b.size());
}
//-----------------------------------------------------------------------------
ostream& operator << (ostream& out, const vector<string>& data)
{
   vector<string>::const_iterator it;
 
   for (it = data.begin(); it != data.end(); ++it)
   {
      out << *it << " ";
   }
 
   return out;
}
//-----------------------------------------------------------------------------
int main()
{
   string text;
 
   cout << "text: ";
   getline(cin, text);
 
   vector<string> a;
   vector<string> b;
 
   Split(text, a, b);
 
   sort(a.begin(), a.end(), ForSort);
   sort(b.begin(), b.end(), ForSort);
 
   cout << a << endl << b << endl;
 
   return 0;
}
Сортировка по гласным, согласным и возрастание букв в слове
-ExotiC-
1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 29
31.05.2013, 21:36  [ТС]     Сортировка по гласным, согласным и возрастание букв в слове #3
Помогите пожалуйста разъяснить все что написал anmartex. Сам пытался осилить, так и не смог
Не понял как работает stringstream
NeonLost
Пес войны
 Аватар для NeonLost
74 / 85 / 3
Регистрация: 23.02.2012
Сообщений: 653
31.05.2013, 22:03     Сортировка по гласным, согласным и возрастание букв в слове #4
ну он считывает текст, затем отсылает его в фнкцию сплит...помещает весь текст в поток и берет по слову из потока while (ss >> word)...далее, если найдена гласная, то помещаем слово в вектор А, иначе в В...
C++
1
if (CChars.find_first_of(tolower(word[0])) != string::npos)
после этого он сортирует оба вектора
C++
1
2
   sort(a.begin(), a.end(), ForSort);
   sort(b.begin(), b.end(), ForSort);
ForSort - это каллбэк, критерий сравнения...плюс он перегрузил оператор вывода для вектора, чтоб не мучаться каждый раз с итераторами...)
-ExotiC-
1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 29
01.06.2013, 16:41  [ТС]     Сортировка по гласным, согласным и возрастание букв в слове #5
NeonLost, спасибо большое за разъяснение

Еще хотел спросить, программа компилируется нормально, но после ввода строки
C++
1
2
   cout << "text: ";
   getline(cin, text);
Visual Studio (2012, Ultimate) выдает ошибку

Я добавил строчку в конце функции main() перед return 0;

C++
1
system("pause");
Больше ничего в коде не изменял

С чем это может быть связано? С кодом или с VS?
Миниатюры
Сортировка по гласным, согласным и возрастание букв в слове  
-ExotiC-
1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 29
01.06.2013, 17:25  [ТС]     Сортировка по гласным, согласным и возрастание букв в слове #6
Заметил, что ошибка выходит не всегда, иногда все проходит нормально. Но где ошибка, так и не понял
anmartex
...
 Аватар для anmartex
1699 / 1192 / 494
Регистрация: 12.02.2013
Сообщений: 1,978
01.06.2013, 19:12     Сортировка по гласным, согласным и возрастание букв в слове #7
-ExotiC-, попробуйте в строке 33 заменить <= на <. Т.е. в debug режиме майкрософтовский компилятор возможно проверяет как ForSort(a, b) так и ForSort(b, a) и в случае одинакового результата выдаёт ошибку. Но это не констатация факта, а предположение.

Не по теме:

Windows есть только на работе, да и там студии нет, поэтому могу только предполагать

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.06.2013, 19:27     Сортировка по гласным, согласным и возрастание букв в слове
Еще ссылки по теме:

C++ Сделать что-бы строка бралась с файла (определить отношение количества гласных букв в предложении к согласным)
Пересановка букв в слове C++
Перестановка букв в слове C++

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

Или воспользуйтесь поиском по форуму:
-ExotiC-
1 / 1 / 0
Регистрация: 25.12.2012
Сообщений: 29
01.06.2013, 19:27  [ТС]     Сортировка по гласным, согласным и возрастание букв в слове #8
Цитата Сообщение от anmartex Посмотреть сообщение
-ExotiC-, попробуйте в строке 33 заменить <= на <. Т.е. в debug режиме майкрософтовский компилятор возможно проверяет как ForSort(a, b) так и ForSort(b, a) и в случае одинакового результата выдаёт ошибку. Но это не констатация факта, а предположение.

Не по теме:

Windows есть только на работе, да и там студии нет, поэтому могу только предполагать

Спасибо большое за помощь, помогло
Yandex
Объявления
01.06.2013, 19:27     Сортировка по гласным, согласным и возрастание букв в слове
Ответ Создать тему
Опции темы

Текущее время: 11:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru