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

Опять непонятки с for_each - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как по указателю на символ найти его индекс в массиве? http://www.cyberforum.ru/cpp-beginners/thread1303448.html
Мучаюсь с прогой уже 3 дня хочу сам написать, вроде все уже понял по логике, но тут проблемка нашел элемент в массиве точнее его указатель, и мне нужен его индекс чтобы в форе поставить от него...
C++ Графический интерфейс для приложения c++ Мне надо написать графический интерфейс к программе. Выглядеть должно примерно так: два поля для ввода данных (русский текст), одна кнопка. При нажатии на кнопку текст из первого поля попадает в... http://www.cyberforum.ru/cpp-beginners/thread1303444.html
C++ Определить класс «Строка» – String длины n. Написать несколько конструкторов, в том числе конструктор копирова
Определить класс «Строка» – String длины n. Написать несколько конструкторов, в том числе конструктор копирования. Реализовать методы для выполнения конкатенации строк, извлечения символа из заданной...
Сумма определенных членов последовательности C++
Даны натуральное n, целые числа a1, ... , an. Необходимо получить сумму тех членов последовательности a1, ... , an, которые кратны 5 Без использования массива:) Заранее спасибо
C++ Определить класс «Квадратная матрица» – Matrix. Класс должен содержать несколько конструкторов, в том числе ко http://www.cyberforum.ru/cpp-beginners/thread1303433.html
Определить класс «Квадратная матрица» – Matrix. Класс должен содержать несколько конструкторов, в том числе конструктор копирования. Реализовать методы для сложения, вычитания, умножения матриц;...
C++ Найти произведение элементов главной диагонали и обменять на минимальный элемент третьей троки б) Дана матрица А(4,4), задать из файла. Найти произведение элементов среди элементов расположенных на главной диагонали матрицы А. Найти минимальный элемент в 3-ей строке матрицы. Поменять местами... подробнее

Показать сообщение отдельно
Гурген
13 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 42

Опять непонятки с for_each - C++

17.11.2014, 21:25. Просмотров 234. Ответов 1
Метки (Все метки)

Недавно создавал тему на проблему реализации for_each.Теперь для моей программы нужно добавить еще одну функцию:• Вывод на экран студентов, указанной группы.Как это реализовать с помощью for_each не понимаю.Помогите пожалуйста , и подкиньте книжки какие-нибудь стоящие по STL.
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
170
171
172
173
174
175
176
177
178
179
#include "stdafx.h"
#include<iostream>
#include<vector>
#include<string>
#include <iterator>
#include <algorithm> 
#include "windows.h"
#include<functional>
using namespace std;
using namespace std::placeholders;
class student
{
public:
    string group;
    string name;
    string surname;
    string patronymic;
    student(){};
    student(string surname1, string name1, string patronymic1, string group1)
    {
        name = name1;
        surname = surname1;
        patronymic = patronymic1;
        group = group1;
    }
    string getgroup1()
    {
        return group;
    }
    string getname1()
    {
        return name;
    }
    string getsurname1()
    {
        return surname;
    }
    friend ostream&operator<<(ostream& stream, student ob);
};
 
bool operator<(const student&o1, const student&o2)
{
    if (o1.name<o2.name) return true;
    return false;
}
ostream&operator<<(ostream& stream, student ob)
{
    stream << ob.surname << " " << ob.name << " " << ob.patronymic << ", " << ob.group << endl;
    return stream;
}
class funct
{ 
    string group1;
public:
    funct() {}
    funct(string s)
    {
        group1=s;
    }
    bool operator()(student a)
    {
        if(group1==a.getgroup1()) return true;
        return false;
    }
};
class cl
{
    
public:
    vector <student> v;
    void up1();
    void up(student&);
    void dobav_back(student);
    void oem(string&);
    void print(student s,string group1)
    {
        funct poisk(group1);
        find_if(v.begin(),v.end(),poisk);
    }
    int Count_1(string);
    friend ostream& operator<<(ostream & stream, cl &ob)
    {
        copy(ob.v.begin(), ob.v.end(), ostream_iterator<student>(stream));
        return stream;
    }
};
int cl::Count_1(string group1)
    {
        funct poisk(group1);
        return count_if(v.begin(),v.end(),poisk);
    }
void cl::oem(string &k)
{
    char st[256];
    cin >> st;
    OemToChar(st, st);
    k = string(st);
}
void cl::up1()
{
 
    for_each(v.begin(), v.end(), bind(&cl::up, this, _1));
}
void cl::dobav_back(student s)
{
    v.push_back(s);
}
void cl::up(student &s)
{
    transform(s.surname.begin(), s.surname.end(), s.surname.begin(), toupper);
    
}
 
int main()
 
{   setlocale(LC_ALL,"russian");
    cl ob;
    string name;
    string surname;
    string surname1;
    string patronymic;
    string group;
    int a;
    student s(surname, name, patronymic, group);
    cout << "1.Добавить нового студента в конец списка*" << endl << "2.Вывести список студентов на экран" <<endl<<"3.Изменить регистр для фамилии студента"<< endl<<"4.Подсчет студентов в группе"<<endl<<"5.Вывод на экран студентов указанной группы"<<endl;
    while (true)
    {
        cout << "Введите пункт-";
        wcin >> a;
        switch (a)
        {
        case 1:
            {
                cout << "Фамилия:";
                ob.oem(surname);
                cout << "Имя:";
                ob.oem(name);
                cout << "Отчество:";
                ob.oem(patronymic);
                cout << "Группа:";
                cin >> group;
                student s(surname, name, patronymic, group);
                ob.dobav_back(s);
                break;
            }
        case 2:
            {
                cout << ob;
                break;
            }
        case 3:
            {
                student s(surname, name, patronymic, group);
                ob.up1();
                break;
            }
        case 4:
            {
                student s(surname, name, patronymic, group);
                cout<<"Группа:";
                cin>>group;
                cout<<endl<<"Количество студентов в группе:";
                cout<<ob.Count_1(group);
                break;
            }
            
        case 5:
            {
                student s(surname, name, patronymic, group);
                cout<<"Группа:";
                cin>>group;
                cout<<endl<<"Студенты в этой группе:";
                break;
            }
        }
    }
    return 0;
 
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.