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

Определить, в которой из двух очередей больше согласных букв - C++

Восстановить пароль Регистрация
 
Student_123
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 5
22.04.2013, 14:39     Определить, в которой из двух очередей больше согласных букв #1
1)Создать две очереди символов. Входная последовательность символов для обеих оче-редей задается пользователем с клавиатуры. Необходимо:
• распечатать обе очереди,
• определить, в которой из двух очередей больше согласных букв,
• построить новую очередь, которая является симметрической разностью двух исходных очередей, и распечатать ее,
• очистить все очереди.

помогите кто могет заранее спасибо
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2013, 14:39     Определить, в которой из двух очередей больше согласных букв
Посмотрите здесь:

Определить номер той строки, в которой больше всего согласных букв C++
Строка содержит произвольный русский текст. Проверить, каких букв в нем больше, гласных или согласных C++
Определить слова, в которых больше гласных букв, чем согласных C++
C++ Определить, каких букв — гласных или согласных — больше в данном тексте
В строке найти слова, в которых гласных букв больше, чем согласных C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 19:22     Определить, в которой из двух очередей больше согласных букв #2
Student_123,

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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
#include <iostream>
#include <string>
#include <queue>
#include <algorithm>
#include <iterator>
#include <vector>
 
template<typename T>
std::istream& operator>>(std::istream& ist, std::queue<T>& queue)
{
    T temp;
    typename std::queue<T>::size_type queuesize = 5, i;
    for(i = 0; i < queuesize; ++i)
    {
        std::cout << "Enter the symbol: "; 
            ist >> temp;
        queue.push(temp);
    }
 
    return ist;
}
 
template<typename T>
std::ostream& operator<<(std::ostream& ost, std::queue<T>& queue)
{
    typename std::queue<T>::size_type queuesize = queue.size(), i;
    for(i = 0; i < queuesize; ++i)
    {
        ost << queue.front() << std::endl;
        queue.push(queue.front());
        queue.pop();
    }
 
    return ost;
}
 
int main() 
{ 
    std::string str("bcdfghjklmnpqrstvwxz");
    std::queue<char> coll1, coll2, coll3;
 
    std::cout << "Enter first queue: \n";
    std::cin >> coll1;
 
    std::cout << "\nEnter second queue: \n";
    std::cin >> coll2;
 
    std::cout << "\nFirst queue: \n";
    std::cout << coll1;
 
    std::cout << "\nSecond queue: \n";
    std::cout << coll2;
 
    int count1 = std::count_if(&coll1.front(), &coll1.back() + 1, [str](char n) -> bool
        {
            bool flag(false);
            std::string::size_type i;
            for(i = 0; i < str.size(); ++i){
                if(n == str[i]){
                    flag = true;
                    break;
                }
            }
 
            return flag;
        }),
 
    count2 = std::count_if(&coll2.front(), &coll2.back() + 1, [str](char n) -> bool
        {
            bool flag(false);
            std::string::size_type i;
            for(i = 0; i < str.size(); ++i){
                if(n == str[i]){
                    flag = true;
                    break;
                }
            }
 
            return flag;
        }); 
 
    if(count1 > count2)
        std::cout << "\nIn the first queue is more consonant!\n";
    else
        std::cout << "\nIn the second queue is more consonant!\n";
 
    std::queue<char>::size_type size1(coll1.size()), size2(coll2.size()), i, j;
 
    bool flag;
    for(i = 0; i < size1; ++i){
        flag = true;
        for(j = 0; j < size1 - 1; ++j){
            if(coll1.front() == coll2.front()){
                flag = false;
                break;
            }
 
            coll2.push(coll2.front());
            coll2.pop();
        }
 
        if(flag){
            if(coll1.front() != coll2.front()){
                coll3.push(coll1.front());
            }
 
            coll2.push(coll2.front());
            coll2.pop();
        }
 
        coll1.push(coll1.front());
        coll1.pop();
    }
 
    for(i = 0; i < size2; ++i){
        flag = true;
        for(j = 0; j < size1 - 1; ++j){
            if(coll2.front() == coll1.front()){
                flag = false;
                break;
            }
 
            coll1.push(coll1.front());
            coll1.pop();
        }
 
        if(flag){
            if(coll2.front() != coll1.front()){
                coll3.push(coll2.front());
            }
 
            coll1.push(coll1.front());
            coll1.pop();
        }
 
        coll2.push(coll2.front());
        coll2.pop();
    }
 
    std::cout << "\nThird queue: \n";
    std::cout << coll3;
 
    while(!coll1.empty()){
        coll1.pop();
    }
 
    while(!coll2.empty()){
        coll2.pop();
    }
 
    while(!coll3.empty()){
        coll3.pop();
    }
 
    std::cout << "\n\n";
    return 0; 
}
Student_123
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 5
22.04.2013, 20:41  [ТС]     Определить, в которой из двух очередей больше согласных букв #3
yoghurt92, спасибо огромнейшее, а можешь подробно расписать что где делается если не сложно, чтобы понять что к чему
yoghurt92
373 / 344 / 22
Регистрация: 17.05.2012
Сообщений: 1,049
22.04.2013, 20:52     Определить, в которой из двух очередей больше согласных букв #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Student_123, ну как-то так)

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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
#include <iostream>
#include <string>
#include <queue>
#include <algorithm>
#include <iterator>
#include <vector>
 
//перегруженный оператор ввода
template<typename T>
std::istream& operator>>(std::istream& ist, std::queue<T>& queue)
{
    T temp;     //промежуточная переменная (символ)
    typename std::queue<T>::size_type queuesize = 5,    //размер очереди
        i;
 
    for(i = 0; i < queuesize; ++i)          
    {
        std::cout << "Enter the symbol: "; 
            ist >> temp;                        //вводим символ
        queue.push(temp);                       //ставим в очередь
    }
 
    return ist;             //для связывания операции ввода
}
 
//перегруженный оператор вывода
template<typename T>
std::ostream& operator<<(std::ostream& ost, std::queue<T>& queue)
{
    typename std::queue<T>::size_type queuesize = queue.size(), //размер очереди
        i;
 
    for(i = 0; i < queuesize; ++i)
    {
        ost << queue.front() << std::endl;      //выводим первый
        queue.push(queue.front());              //добавляем первый в конец
        queue.pop();                            //удаляем первый
    }
 
    return ost;         //для связывания операции вывода
}
 
int main() 
{ 
    std::string str("bcdfghjklmnpqrstvwxz");        //строка с согласными буквами
    std::queue<char> coll1, coll2, coll3;           //три очереди
 
    std::cout << "Enter first queue: \n";
    std::cin >> coll1;                          //вводим очередь 1
 
    std::cout << "\nEnter second queue: \n";
    std::cin >> coll2;                          //вводим очередь 2
 
    std::cout << "\nFirst queue: \n";
    std::cout << coll1;                         //выводим очередь 1
 
    std::cout << "\nSecond queue: \n";
    std::cout << coll2;                         //выводим очередь 2
 
    //считаем кол-во согласных
    int count1 = std::count_if(&coll1.front(), &coll1.back() + 1, [str](char n) -> bool
        {
            bool flag(false);
            std::string::size_type i;
            for(i = 0; i < str.size(); ++i){
                if(n == str[i]){
                    flag = true;
                    break;
                }
            }
 
            return flag;
        }),
 
    //считаем кол-во согласных
    count2 = std::count_if(&coll2.front(), &coll2.back() + 1, [str](char n) -> bool
        {
            bool flag(false);
            std::string::size_type i;
            for(i = 0; i < str.size(); ++i){
                if(n == str[i]){
                    flag = true;
                    break;
                }
            }
 
            return flag;
        }); 
 
    //ну тут понятно
    if(count1 > count2)
        std::cout << "\nIn the first queue is more consonant!\n";
    else
        std::cout << "\nIn the second queue is more consonant!\n";
 
    std::queue<char>::size_type size1(coll1.size()), size2(coll2.size()), i, j;
 
    bool flag;
    //записывем что не вошло в воторую очередь в третью
    for(i = 0; i < size1; ++i){
        flag = true;
        for(j = 0; j < size1 - 1; ++j){
            if(coll1.front() == coll2.front()){
                flag = false;
                break;
            }
 
            coll2.push(coll2.front());
            coll2.pop();
        }
 
        if(flag){
            if(coll1.front() != coll2.front()){
                coll3.push(coll1.front());
            }
 
            coll2.push(coll2.front());
            coll2.pop();
        }
 
        coll1.push(coll1.front());
        coll1.pop();
    }
 
    //записывем что не вошло в первую очередь в третью
    for(i = 0; i < size2; ++i){
        flag = true;
        for(j = 0; j < size1 - 1; ++j){
            if(coll2.front() == coll1.front()){
                flag = false;
                break;
            }
 
            coll1.push(coll1.front());
            coll1.pop();
        }
 
        if(flag){
            if(coll2.front() != coll1.front()){
                coll3.push(coll2.front());
            }
 
            coll1.push(coll1.front());
            coll1.pop();
        }
 
        coll2.push(coll2.front());
        coll2.pop();
    }
 
    std::cout << "\nThird queue: \n";
    std::cout << coll3;                 //выводим очередь 3
 
    //очищаем очереди
    while(!coll1.empty()){
        coll1.pop();
    }
 
    while(!coll2.empty()){
        coll2.pop();
    }
 
    while(!coll3.empty()){
        coll3.pop();
    }
 
    std::cout << "\n\n";
    return 0; 
}
Student_123
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 5
22.04.2013, 20:58  [ТС]     Определить, в которой из двух очередей больше согласных букв #5
Спасибо дружище, выручил
Yandex
Объявления
22.04.2013, 20:58     Определить, в которой из двух очередей больше согласных букв
Ответ Создать тему
Опции темы

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