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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Как по указателю на символ найти его индекс в массиве? http://www.cyberforum.ru/cpp-beginners/thread1303448.html
Мучаюсь с прогой уже 3 дня хочу сам написать, вроде все уже понял по логике, но тут проблемка нашел элемент в массиве точнее его указатель, и мне нужен его индекс чтобы в форе поставить от него выборку. Объясните плс как блин понять какой это элемент из массива?????:wall:
C++ Графический интерфейс для приложения c++ Мне надо написать графический интерфейс к программе. Выглядеть должно примерно так: два поля для ввода данных (русский текст), одна кнопка. При нажатии на кнопку текст из первого поля попадает в массив char*, проходит преобразование и отображается по втором поле. Код преобразования я уже написал, надо сделать UI. До этого никогда не работал с графическим интерфейсом - только с консолью. С помощью... 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. Класс должен содержать несколько конструкторов, в том числе конструктор копирования. Реализовать методы для сложения, вычитания, умножения матриц; вычисления нормы матрицы. Перегрузить операции сложения, вычитания, умножения и присваивания для данного класса. Создать массив объектов класса Matrix и передать его в функцию, которая изменяет -ю...
C++ Найти произведение элементов главной диагонали и обменять на минимальный элемент третьей троки б) Дана матрица А(4,4), задать из файла. Найти произведение элементов среди элементов расположенных на главной диагонали матрицы А. Найти минимальный элемент в 3-ей строке матрицы. Поменять местами найденный минимальный элемент и значение P. Пы. Сы: ребят, очень прошу, не используйте сложные операторы) подробнее

Показать сообщение отдельно
Гурген
13 / 0 / 0
Регистрация: 16.11.2014
Сообщений: 39
17.11.2014, 21:25     Опять непонятки с for_each
Недавно создавал тему на проблему реализации 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;
 
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:42. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru