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

Библиотеки - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Экзамен. http://www.cyberforum.ru/cpp-beginners/thread325056.html
Здравствуйте, форумчане! Понимаю, что неправильно, но завтра экзамен, и нужно сделать программу на C++. Если кому не сложно, помогите пожалуйста, напишите. Спасибо, если кто откликнется! Задача: "Ладья на шахматной доске". Данные класса: координаты ладьи. Функции класса: сравнение позиций двух ладей, проверка, не находится ли ладьи под боем друг друга, проверка, может ли ладья пойти в...
C++ Ввести строку символов, если ее длина четная, удалить 2 первых и 2 последних символа. Ввести строку символов, если ее длина четная, удалить 2 первых и 2 последних символа. Решить задачу в VC++. http://www.cyberforum.ru/cpp-beginners/thread325052.html
Списки. Как правильней организовать? C++
Вот текст программы #include <iostream> #include <conio.h> #include <ctime> #include <cstdlib> #include <windows.h> using namespace std; int num,n;
Сортировка массива C++
Всем привет...вот завтра надо сдавать, а что то мой мозг подкипает. В общем суть такова: есть массив, который передаётся в функцию(функцию выложил). Нужно преобразовать так, что бы вначале шли элементы отличающиеся от максимального не более чем на 20%, а дальше все остальные. Привожу саму функцию: void sort(int ar, int n) { int max = 0; int maxi; for (int i = 1; i < n; i++) if...
C++ Ввести целое число. Определить, симметрично ли оно, т.е. одинаковы ли цифры слева и справа (12321). Записать 3 последние цифры в одномерный массив. http://www.cyberforum.ru/cpp-beginners/thread325032.html
Ввести целое число. Определить, симметрично ли оно, т.е. одинаковы ли цифры слева и справа (12321). Записать 3 последние цифры в одномерный массив. Решить задачу в VC++.
C++ Составить линейную программу, печатающую значение true, если указанное высказывание является истинным, и false - в противном случае. Помогите,пожалуйста,решить.... Составить линейную программу, печатающую значение true, если указанное высказывание является истинным, и false - в противном случае. Число с является средним арифметическим чисел а и b. подробнее

Показать сообщение отдельно
Тикер
-6 / 2 / 0
Регистрация: 21.06.2011
Сообщений: 18
23.06.2011, 18:05  [ТС]
Тогда почему у мя неработает ето:

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 << "Введите текст: ";
    std::cin >> input_string;
 
    if (input_string.find_first_not_of(letters + digits + symbols) != std::string::npos)
    {
        std::cout << "Введённая строка не соответствует шаблону: строка должна  содержать только строчные буквы "
                     "латинского алфавита, цифры или знаки \"+\", \"-\" или \"*\"!" << 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 << "Введите искомую подстроку: ";
    std::cin >> substring;
 
    if (input_string.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_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 << "Группы букв введённой строки, начинающиеся и заканчивающиеся на одну и ту же букву: " << std::endl;
    std::copy(string_vector.begin(), string_vector.end(), std::ostream_iterator< std::string > (std::cout, "\n"));
 
    std::cout << "Общее их количество: " << string_vector.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;
 
    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 << "Группы букв введённой строки, содержащие букву " << 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_vector.begin(), string_vector.end(), std::ostream_iterator< std::string > (std::cout, "\n"));
 
    return 0;
}
 Комментарий модератора 
Используйте теги форматирования кода!
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru