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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В алфавитной строке перевести строчные буквы в заглавные и заглавные в строчные http://www.cyberforum.ru/cpp-beginners/thread326583.html
В заданой алфавитной строке перевести строчные буквы в заглавные и заглавные в строчные. Со строковыми функциями еще не доводилось работать. Помогите, пожалуйста.
C++ Следующее четное Здравствуйте! Помогите пожалуйста найти следующие четное число, нельзя использовать условную инструкцию if и циклы!!! с if все легко: #include "stdafx.h" #include "fstream" http://www.cyberforum.ru/cpp-beginners/thread326578.html
Вопрос по конструктороам C++
Добрый день! Скажите пожалуйста, каким конструктором пользоваться? Есть авторы, которые показывают такую структуру: class MyClass { private: int val; int...
Циклически сдвинуть строки в двумерном массиве заданным образом C++
Создать программу, которая циклически сдвигает строки в двумерном массиве следующим образом: первая строка становится последней, вторая - первой, третья - второй и т.д. Требование 1. Элементы...
C++ Соединить строки, вставить между ними соединительное слово и удалить один вопросительный знак http://www.cyberforum.ru/cpp-beginners/thread326559.html
аны две строки с вопросительными знаками в конце. Соединить их ,вставить между ними соединительное слово и удалить один ВОПРОСИТЕЛЬНЫЙ ЗНАКС. Срочно на экзамене
C++ Матрица [3x3] через шаблоны Переставить все элементы k-ой строки (между собой) и все элементы побочной диагонали. Размер матрицы Заранее спасибо подробнее

Показать сообщение отдельно
Тикер
-6 / 2 / 0
Регистрация: 21.06.2011
Сообщений: 18

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

27.06.2011, 13:28. Просмотров 576. Ответов 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;
 Комментарий модератора 
Используйте теги форматирования кода!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru