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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Тикер
-6 / 2 / 0
Регистрация: 21.06.2011
Сообщений: 18
#1

Дан текст - C++

27.06.2011, 13:28. Просмотров 558. Ответов 13
Метки нет (Все метки)

Дан текст, каждый символ которого может быть малой буквой, цифрой или одним из знаков +, -, *.
1. Выяснить, встречается ли в данном текста группа букв, заданная пользователем.
2. Подсчитать число и вывести такие группы букв, которые начинаются и кончаются одной и той же буквой.
3. Найти все такие группы букв, в которые заданная пользователем буква входит указанное число раз.

ПОЧЕМУ ЗДЕСЬ 25 ОШИБОК

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
include <iostream.h>
#include <vector.h>
#include <string.h>
#include <algorithm.h>
#include <iterator.h>
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    std::string letters = "abcdefghijklmnopqrstuvwxyz";
    std::string digits = "0123456789";
    std::string symbols = "+-*";
 
    std::string input_string;
 
    std::cout << "Vvedite text : ";
    std::cin >> input_string;
 
    if (input_string.find_first_not_of(letters + digits + symbols) != std::string::npos)
    {
    std::cout << "Vvedenuu text ne cootvetctvyet shablony "
        << std::endl;
 
    return 0;
    }
 
    std::vector< std::string > string_vector;
    std::vector< std::string >::const_iterator string_vector_it;
 
    std::string::const_iterator input_string_begin = input_string.begin();
 
//-----------------------------------------------------------------------------------------------------------------------------------------
 
    std::string substring;
 
    std::cout << "Vvedite iskomyy podstroky: ";
    std::cin >> substring;
 
    if (input_string.find_first_not_of(letters) != std::string::npos)
    {
    std::cout << "Vvedenaya podstroka moget coctoyat tolko uz latin. bykv " << std::endl;
 
    return 0;
    }
 
    std::cout << "Uskomaya postroka"
          << (input_string.find(substring) == std::string::npos ? " не " : " ")
          << "naudena v ushodnou stroke" << std::endl;
 
//-----------------------------------------------------------------------------------------------------------------------------------------
 
    for (std::string::value_type c = 'a'; c <= 'z'; ++c)
    {
    for (std::string::size_type left_pos = input_string.find_first_of(c);
         left_pos != std::string::npos;
         left_pos = input_string.find_first_of(c, left_pos + 1))
    {
        for (std::string::size_type right_pos = input_string.find_first_of(c, left_pos + 1), left_pos_copy = left_pos;
         right_pos != std::string::npos;
         left_pos_copy = right_pos, right_pos = input_string.find_first_of(c, left_pos_copy + 1))
        {
        string_vector.push_back(std::string (input_string_begin + left_pos, input_string_begin + right_pos + 1));
        }
    }
    }
 
    std::sort(string_vector.begin(), string_vector.end());
 
    string_vector_it = std::unique(string_vector.begin(), string_vector.end());
 
    string_vector.resize(string_vector_it - string_vector.begin());
 
    std::cout << "grupu bykv vvedenou stroki nachinaetca odnou i tou ge bykvou: " << std::endl;
    std::copy(string_vector.begin(), string_vector.end(), std::ostream_iterator< std::string > (std::cout, "\n"));
 
    std::cout << "Obshee ix kolichestvo: " << string_vector.size() << std::endl;
 
//-----------------------------------------------------------------------------------------------------------------------------------------
 
    std::string::value_type input_letter;
    size_t let_num;
 
    std::cout << "Vvedite bykvy: ";
    std::cin >> input_letter;
 
    if (input_letter < 'a' || input_letter > 'z')
    {
    std::cout << "Neobxodimo vesti stochnue bykvu " << std::endl;
 
    return 0;
    }
 
    std::cout << "Vvedite 4islo bykv v grype : ";
    std::cin >> let_num;
 
    string_vector.clear();
 
    std::string::size_type left_pos = 0;
 
    while ((left_pos = input_string.find_first_of(input_letter, left_pos)) != std::string::npos)
    {
    std::string::size_type right_pos = left_pos;
    size_t cur_let_num = 1;
 
    while ((right_pos = input_string.find_first_of(input_letter, right_pos + 1)) != std::string::npos)
    {
        if (++cur_let_num == let_num)
        {
        string_vector.push_back(std::string (input_string_begin + left_pos, input_string_begin + right_pos + 1));
 
        break;
        }
    }
 
    if (right_pos == std::string::npos)
        break;
 
    ++left_pos;
    }
 
    std::sort(string_vector.begin(), string_vector.end());
 
    string_vector_it = std::unique(string_vector.begin(), string_vector.end());
 
    string_vector.resize(string_vector_it - string_vector.begin());
 
    std::cout << "Grypu bykv vvedenou stroki, sodergashee bykvy  " << input_letter << " " << let_num << "raz"
          << ((let_num % 10 == 2 || let_num % 10 == 3 || let_num % 10 == 4) &&
          !(let_num == 12 || let_num == 13 || let_num == 14) ? "а" : "") << ": " << std::endl;
    std::copy(string_vector.begin(), string_vector.end(), std::ostream_iterator< std::string > (std::cout, "\n"));
 
    return 0;
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.06.2011, 13:28     Дан текст
Посмотрите здесь:

Дан текст и некоторые два слова. Определить, сколько раз они входят в текст и... - C++
Дан текст и некоторые два слова. Определить, сколько раз они входят в текст и сколько раз они располагаются непосредственно друг за другом.

Дан текст из строчных латинских букв, за которым следует точка. Напечатать: б) все буквы, входящие в текст по одному разу; - C++
Дан текст из строчных латинских букв, за которым следует точка. Напечатать: б) все буквы, входящие в текст по одному разу;

Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз - C++
Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз.

Дан файл, содержащий текст на русском языке. Выяснить, входит ли данное слово в указанный текст, и если да, то сколько раз - C++
...

Дан текст - C++
Составить программу, которая определит, является ли заданное слово перевертышем (например, &quot;кок&quot;, &quot;шалаш&quot; являются). #include...

Дан текст... - C++
Всем привет! Уважаемые господа! Кому не сложно посмотрите это задание: Дан текст. Преобразовать его поменяв местами максимальное...

Дан произвольный текст - C++
И надо введенную строку отсортировать по латинскому алфавиту, которые входят в этот текст по одному разу есть #include &lt;iostream&gt; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.06.2011, 13:31     Дан текст #2
Цитата Сообщение от Тикер Посмотреть сообщение
ПОЧЕМУ ЗДЕСЬ 25 ОШИБОК
вот и спросите там где взяли...
Тикер
-6 / 2 / 0
Регистрация: 21.06.2011
Сообщений: 18
27.06.2011, 13:34  [ТС]     Дан текст #3
У меня ошибка в
#include <iostream.h>
#include <vector.h>
#include <string.h>
#include <algorithm.h>
#include <iterator.h>
Ето значит нада скачать библиотеки???
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.06.2011, 13:37     Дан текст #4
C++
1
2
3
4
5
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
grizlik78
Эксперт С++
1908 / 1440 / 110
Регистрация: 29.05.2011
Сообщений: 2,995
27.06.2011, 13:39     Дан текст #5
Неплохо бы компилятор указывать, но попробуйте заменить это на:
C++
1
2
3
4
5
6
7
#include <iostream>
#include <vector>
#include <cstring>
#include <algorithm>
#include <iterator>
 
using namespace std;
Добавлено через 1 минуту
Впрочем да, namespace здесь не обязателен, да и сишных строк, наверное, нет, так что вариант
Maxwe11 должен подойти.
Тикер
-6 / 2 / 0
Регистрация: 21.06.2011
Сообщений: 18
27.06.2011, 13:44  [ТС]     Дан текст #6
Та оно без разницы все равно неработает
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.06.2011, 13:47     Дан текст #7
Цитата Сообщение от Тикер Посмотреть сообщение
return 0;
скобки расставь
Тикер
-6 / 2 / 0
Регистрация: 21.06.2011
Сообщений: 18
27.06.2011, 13:53  [ТС]     Дан текст #8
Может ты раставиш (буду благодарен)
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.06.2011, 13:57     Дан текст #9
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
 
 int main()
 {
 setlocale(LC_ALL, "Rus");
 
 std::string letters = "abcdefghijklmnopqrstuvwxyz";
 std::string digits = "0123456789";
 std::string symbols = "+-*";
 
 std::string input_string;
 
 std::cout << "Vvedite text : ";
 std::cin >> input_string;
 
 if (input_string.find_first_not_of(letters + digits + symbols) != std::string::npos)
 {
 std::cout << "Vvedenuu text ne cootvetctvyet shablony "
 << std::endl;
 
 return 0;
 }
 
 std::vector< std::string > string_vector;
 std::vector< std::string >::const_iterator string_vector_it;
 
 std::string::const_iterator input_string_begin = input_string.begin();
 
 //-----------------------------------------------------------------------------------------------------------------------------------------
 
 std::string substring;
 
 std::cout << "Vvedite iskomyy podstroky: ";
 std::cin >> substring;
 
 if (input_string.find_first_not_of(letters) != std::string::npos)
 {
 std::cout << "Vvedenaya podstroka moget coctoyat tolko uz latin. bykv " << std::endl;
 
 return 0;
 }
 
 std::cout << "Uskomaya postroka"
 << (input_string.find(substring) == std::string::npos ? " не " : " ")
 << "naudena v ushodnou stroke" << std::endl;
 
 //-----------------------------------------------------------------------------------------------------------------------------------------
 
 for (std::string::value_type c = 'a'; c <= 'z'; ++c)
 {
 for (std::string::size_type left_pos = input_string.find_first_of(c);
 left_pos != std::string::npos;
 left_pos = input_string.find_first_of(c, left_pos + 1))
 {
 for (std::string::size_type right_pos = input_string.find_first_of(c, left_pos + 1), left_pos_copy = left_pos;
 right_pos != std::string::npos;
 left_pos_copy = right_pos, right_pos = input_string.find_first_of(c, left_pos_copy + 1))
 {
 string_vector.push_back(std::string (input_string_begin + left_pos, input_string_begin + right_pos + 1));
 }
 }
 }
 
 std::sort(string_vector.begin(), string_vector.end());
 
 string_vector_it = std::unique(string_vector.begin(), string_vector.end());
 
 string_vector.resize(string_vector_it - string_vector.begin());
 
 std::cout << "grupu bykv vvedenou stroki nachinaetca odnou i tou ge bykvou: " << std::endl;
 std::copy(string_vector.begin(), string_vector.end(), std::ostream_iterator< std::string > (std::cout, "\n"));
 
 std::cout << "Obshee ix kolichestvo: " << string_vector.size() << std::endl;
 
 //-----------------------------------------------------------------------------------------------------------------------------------------
 
 std::string::value_type input_letter;
 size_t let_num;
 
 std::cout << "Vvedite bykvy: ";
 std::cin >> input_letter;
 
 if (input_letter < 'a' || input_letter > 'z')
 {
 std::cout << "Neobxodimo vesti stochnue bykvu " << std::endl;
 
 return 0;
 }
 
 std::cout << "Vvedite 4islo bykv v grype : ";
 std::cin >> let_num;
 
 string_vector.clear();
 
 std::string::size_type left_pos = 0;
 
 while ((left_pos = input_string.find_first_of(input_letter, left_pos)) != std::string::npos)
 {
 std::string::size_type right_pos = left_pos;
 size_t cur_let_num = 1;
 
 while ((right_pos = input_string.find_first_of(input_letter, right_pos + 1)) != std::string::npos)
 {
 if (++cur_let_num == let_num)
 {
 string_vector.push_back(std::string (input_string_begin + left_pos, input_string_begin + right_pos + 1));
 
 break;
 }
 }
 
 if (right_pos == std::string::npos)
 break;
 
 ++left_pos;
 }
 
 std::sort(string_vector.begin(), string_vector.end());
 
 string_vector_it = std::unique(string_vector.begin(), string_vector.end());
 
 string_vector.resize(string_vector_it - string_vector.begin());
 
 std::cout << "Grypu bykv vvedenou stroki, sodergashee bykvy " << input_letter << " " << let_num << "raz"
 << ((let_num % 10 == 2 || let_num % 10 == 3 || let_num % 10 == 4) &&
 !(let_num == 12 || let_num == 13 || let_num == 14) ? "а" : "") << ": " << std::endl;
 std::copy(string_vector.begin(), string_vector.end(), std::ostream_iterator< std::string > (std::cout, "\n"));
 
 return 0;
 }
nameless
Эксперт C++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
27.06.2011, 13:57     Дан текст #10
Тикер,

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <iterator>
 
int main()
{
setlocale(LC_ALL, "Rus");
 
std::string letters = "abcdefghijklmnopqrstuvwxyz";
std::string digits = "0123456789";
std::string symbols = "+-*";
 
std::string input_string;
 
std::cout << "Vvedite text : ";
std::cin >> input_string;
 
if (input_string.find_first_not_of(letters + digits + symbols) != std::string::npos)
{
std::cout << "Vvedenuu text ne cootvetctvyet shablony "
<< std::endl;
 
return 0;
}
 
std::vector< std::string > string_vector;
std::vector< std::string >::const_iterator string_vector_it;
 
std::string::const_iterator input_string_begin = input_string.begin();
 
//-----------------------------------------------------------------------------------------------------------------------------------------
 
std::string substring;
 
std::cout << "Vvedite iskomyy podstroky: ";
std::cin >> substring;
 
if (input_string.find_first_not_of(letters) != std::string::npos)
{
std::cout << "Vvedenaya podstroka moget coctoyat tolko uz latin. bykv " << std::endl;
 
return 0;
}
 
std::cout << "Uskomaya postroka"
<< (input_string.find(substring) == std::string::npos ? " не " : " ")
<< "naudena v ushodnou stroke" << std::endl;
 
//-----------------------------------------------------------------------------------------------------------------------------------------
 
for (std::string::value_type c = 'a'; c <= 'z'; ++c)
{
for (std::string::size_type left_pos = input_string.find_first_of(c);
left_pos != std::string::npos;
left_pos = input_string.find_first_of(c, left_pos + 1))
{
for (std::string::size_type right_pos = input_string.find_first_of(c, left_pos + 1), left_pos_copy = left_pos;
right_pos != std::string::npos;
left_pos_copy = right_pos, right_pos = input_string.find_first_of(c, left_pos_copy + 1))
{
string_vector.push_back(std::string (input_string_begin + left_pos, input_string_begin + right_pos + 1));
}
}
}
 
std::sort(string_vector.begin(), string_vector.end());
 
string_vector_it = std::unique(string_vector.begin(), string_vector.end());
 
string_vector.resize(string_vector_it - string_vector.begin());
 
std::cout << "grupu bykv vvedenou stroki nachinaetca odnou i tou ge bykvou: " << std::endl;
std::copy(string_vector.begin(), string_vector.end(), std::ostream_iterator< std::string > (std::cout, "\n"));
 
std::cout << "Obshee ix kolichestvo: " << string_vector.size() << std::endl;
 
//-----------------------------------------------------------------------------------------------------------------------------------------
 
std::string::value_type input_letter;
size_t let_num;
 
std::cout << "Vvedite bykvy: ";
std::cin >> input_letter;
 
if (input_letter < 'a' || input_letter > 'z')
{
std::cout << "Neobxodimo vesti stochnue bykvu " << std::endl;
 
return 0;
}
 
std::cout << "Vvedite 4islo bykv v grype : ";
std::cin >> let_num;
 
string_vector.clear();
 
std::string::size_type left_pos = 0;
 
while ((left_pos = input_string.find_first_of(input_letter, left_pos)) != std::string::npos)
{
std::string::size_type right_pos = left_pos;
size_t cur_let_num = 1;
 
while ((right_pos = input_string.find_first_of(input_letter, right_pos + 1)) != std::string::npos)
{
if (++cur_let_num == let_num)
{
string_vector.push_back(std::string (input_string_begin + left_pos, input_string_begin + right_pos + 1));
 
break;
}
}
 
if (right_pos == std::string::npos)
break;
 
++left_pos;
}
 
std::sort(string_vector.begin(), string_vector.end());
 
string_vector_it = std::unique(string_vector.begin(), string_vector.end());
 
string_vector.resize(string_vector_it - string_vector.begin());
 
std::cout << "Grypu bykv vvedenou stroki, sodergashee bykvy " << input_letter << " " << let_num << "raz"
<< ((let_num % 10 == 2 || let_num % 10 == 3 || let_num % 10 == 4) &&
!(let_num == 12 || let_num == 13 || let_num == 14) ? "а" : "") << ": " << std::endl;
std::copy(string_vector.begin(), string_vector.end(), std::ostream_iterator< std::string > (std::cout, "\n"));
 
return 0;
}
Вот, ошибок быть не должно..
Тикер
-6 / 2 / 0
Регистрация: 21.06.2011
Сообщений: 18
27.06.2011, 14:07  [ТС]     Дан текст #11
Все равно 25 ошибок
А на каком вы пишете С++
Jupiter
Каратель
Эксперт С++
6553 / 3973 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
27.06.2011, 14:10     Дан текст #12
Цитата Сообщение от Тикер Посмотреть сообщение
А на каком вы пишете С++
вам уже дали ссылку
Цитата Сообщение от iama Посмотреть сообщение
Если имеется в виду Visual C++ 2010, то держи ссылку на офсайт
Тикер
-6 / 2 / 0
Регистрация: 21.06.2011
Сообщений: 18
27.06.2011, 14:11  [ТС]     Дан текст #13
Аааааааааааааа
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.06.2011, 15:33     Дан текст
Еще ссылки по теме:

Дан текст из цифр! - C++
Дан текст из цифр и строчных латинских букв, за которыми следует точка. Определить, каких букв - гласных (a,e,i,o,u) или согласных больше в...

Дан текст. Определить является ли он Хайку - C++
Всем привет!!!Нужна ваша помощь в решении вот такой задачи на языке с++.Заранее спасибо за помощь. Дан текст.Определить является ли он...

Дан текст состоящий из нескольких предложений... - C++
Помогите решить задачу. Нужно на Си. Дан текст, состоящий из нескольких предложений. Предложения оканчиваются точкой, восклицательным...

Дан текст определить количество слов в нём. - C++
Дан текст определить количество слов в нём.

Дан текст. Напечатать все слова текста - C++
Дан текст. Напечатать все слова текста, предварительно выполнив преобразования их по правилу: заменить во всех словах первую букву...


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

Или воспользуйтесь поиском по форуму:
silent_1991
Эксперт С++
4960 / 3036 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
27.06.2011, 15:33     Дан текст #14
Тикер, вы коверкаете оригинал, а потом удивляетесь, что компилятор ругается на результаты ваших переделок. Я бы не удивлялся... Вот оригинал. Если и тут компилятор найдёт ошибки - претензии только к нему.

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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#include <iostream>
#include <string>
#include <set>
#include <algorithm>
#include <iterator>
 
int main()
{
    setlocale(LC_ALL, "Rus");
 
    std::string letters = "abcdefghijklmnopqrstuvwxyz";
    std::string digits = "0123456789";
    std::string symbols = "+-*";
 
    std::string input_string;
 
    std::cout << "Введите текст: ";
    std::cin >> input_string;
 
    if (input_string.find_first_not_of(letters + digits + symbols) != std::string::npos)
    {
        std::cout << "Введённая строка не соответствует шаблону: строка должна  содержать только строчные буквы "
                     "латинского алфавита, цифры или знаки \"+\", \"-\" или \"*\"!" << std::endl;
 
        return 0;
    }
 
    std::set< std::string > string_set;
 
    std::string::const_iterator input_string_begin = input_string.begin();
 
//-----------------------------------------------------------------------------------------------------------------------------------------
 
    std::string substring;
 
    std::cout << "Введите искомую подстроку: ";
    std::cin >> substring;
 
    if (substring.find_first_not_of(letters) != std::string::npos)
    {
        std::cout << "Введённая подстрока может состоять только из строчных букв латинского алфавита!" << std::endl;
 
        return 0;
    }
 
    std::cout << "Искомая подстрока"
              << (input_string.find(substring) == std::string::npos ? " не " : " ")
              << "найдена в исходной строке" << std::endl;
 
//-----------------------------------------------------------------------------------------------------------------------------------------
 
    for (std::string::value_type c = 'a'; c <= 'z'; ++c)
    {
        for (std::string::size_type left_pos = input_string.find_first_of(c);
             left_pos != std::string::npos;
             left_pos = input_string.find_first_of(c, left_pos + 1))
        {
            for (std::string::size_type right_pos = input_string.find_first_of(c, left_pos + 1), left_pos_copy = left_pos;
                 right_pos != std::string::npos;
                 left_pos_copy = right_pos, right_pos = input_string.find_first_of(c, left_pos_copy + 1))
            {
                string_set.insert(std::string (input_string_begin + left_pos, input_string_begin + right_pos + 1));
            }
        }
    }
 
    std::cout << "Группы букв введённой строки, начинающиеся и заканчивающиеся на одну и ту же букву: " << std::endl;
    std::copy(string_set.begin(), string_set.end(), std::ostream_iterator< std::string > (std::cout, "\n"));
 
    std::cout << "Общее их количество: " << string_set.size() << std::endl;
 
//-----------------------------------------------------------------------------------------------------------------------------------------
 
    std::string::value_type input_letter;
    size_t let_num;
 
    std::cout << "Введите букву: ";
    std::cin >> input_letter;
 
    if (input_letter < 'a' || input_letter > 'z')
    {
        std::cout << "Необходимо ввести строчную букву латинского алфавита!" << std::endl;
 
        return 0;
    }
 
    std::cout << "Введите число букв в группе: ";
    std::cin >> let_num;
 
    if (let_num != 1)
    {
        string_set.clear();
 
        std::string::size_type left_pos = 0;
 
        while ((left_pos = input_string.find_first_of(input_letter, left_pos)) != std::string::npos)
        {
            std::string::size_type right_pos = left_pos;
            size_t cur_let_num = 1;
 
            while ((right_pos = input_string.find_first_of(input_letter, right_pos + 1)) != std::string::npos)
            {
                if (++cur_let_num == let_num)
                {
                    string_set.insert(std::string (input_string_begin + left_pos, input_string_begin + right_pos + 1));
 
                    break;
                }
            }
 
            if (right_pos == std::string::npos)
                break;
 
            ++left_pos;
        }
 
        std::cout << "Группы букв введённой строки, содержащие букву " << input_letter << " " << let_num << " раз"
                  << ((let_num % 10 == 2 || let_num % 10 == 3 || let_num % 10 == 4) &&
                      !(let_num == 12 || let_num == 13 || let_num == 14) ? "а" : "") << ": " << std::endl;
        std::copy(string_set.begin(), string_set.end(), std::ostream_iterator< std::string > (std::cout, "\n"));
    }
    else
        if (input_string.find_first_of(input_letter) != std::string::npos)
            std::cout << "Группы букв введённой строки, содержащие букву " << input_letter << " 1 раз: " << std::endl
                      << input_letter << std::endl;
 
    return 0;
}
Yandex
Объявления
27.06.2011, 15:33     Дан текст
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru