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

Файл структур: сортировка по выбираемому пользователем полю - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Хелп с POST на C++ http://www.cyberforum.ru/cpp-beginners/thread432528.html
Друзья. Помогите переписать код на C++ $sDomain = 'ХХХ.ХХХ.ХХХ.50' ;домен или ip-адрес $iPort = 80 ;порт $sParameters =...
C++ Загвостка с функцией Y=f(xi) Помогите ,пожалуйста ,закончить код. Начальная задача-Составить и выполнить программы циклической структуры расчета Y=f(xi), где xi еX код ,который нужно исправить #define _USE_MATH_DEFINES #include<iostream> #include<stdio.h> #include<cmath> int main() { http://www.cyberforum.ru/cpp-beginners/thread432526.html
Интересный Экзамен(наследование и ООП) C++
вот такие задачки, просто совсем не понятно как подступить....шаблоны STL и контейнеры не знаю,хотел без нихх...понял что функции,будет базовый класс и два наследника....но как,что,где...(
C++ Двумерный массив - сортировка.
Дано задание по двумерным матрицам: 1)Упорядочить строки целочисленной прямоугольной матрицы по возрастанию количества одинаковых элементов в каждой строке. 2)Найти номер первого из столбцов, не содержащих ни одного отрицательного элемента. Непонятно написание первой части программы. Понимаю сам смысл - сравнить все элементы каждой строки, затем отсортировать строки по возрастанию...
C++ Виртуальные функции. Программа вылетает с ошибкой. http://www.cyberforum.ru/cpp-beginners/thread432504.html
Хотя дело может быть и не в виртуальных функциях. В общем портянка такова: #include <iostream> #include <cstdlib> #include <time.h> using namespace std; using std::srand; using std::rand;
C++ Разветвление Ввести три целых числа и найти наибольшее из них. #include <iostream.h> main() { int a, b, c, max; cout<<"Vvedite tri zeluh chisla "; cin>>a>>b>>c; if подробнее

Показать сообщение отдельно
igorrr37
1640 / 1268 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
21.01.2012, 22:53     Файл структур: сортировка по выбираемому пользователем полю
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
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <fstream>
#include <iterator>
 
struct Student
{
    std::string name, surname, patronym, group;
    std::size_t mark;
    friend std::ostream& operator<<(std::ostream& o, const Student& st)
    {
        o << st.surname << '\n' << st.name << '\n' << st.patronym << '\n' << st.group << '\n' << st.mark;
        return o;
    }
};
 
template<typename F>
void Sort(F Student::*, std::vector<Student>& );
 
template<typename F>
struct StudCompare
{
    StudCompare(F Student::* _pField) : pField(_pField){}
    bool operator()(const Student& a, const Student& b) const
    {
        return a.*pField < b.*pField;
    }
private:
    F Student::* pField;
};
 
int main()
{
    std::fstream fs("1.txt");
    if(fs)
    {
        std::vector<Student> v;
        Student tmp;
        while(fs >> tmp.surname >> tmp.name >> tmp.patronym >> tmp.group >> tmp.mark)
        {
            v.push_back(tmp);
        }
        std::cout << "v.size() is " << v.size() << "\n\n";
        std::cout << "Input sort criterion(1 - 5): 1 - surname, 2 - name, 3 - patronym, "
        "4 - group, 5 - mark\n";
        std::size_t crit;
        std::cin >> crit;
        if(crit >= 1 && crit <= 5)
        {
            switch(crit)
            {
                case 1 : Sort(&Student::surname, v); break;
                case 2 : Sort(&Student::name, v); break;
                case 3 : Sort(&Student::patronym, v); break;
                case 4 : Sort(&Student::group, v); break;
                case 5 : Sort(&Student::mark, v); break;
            }
            std::copy(v.begin(), v.end(), std::ostream_iterator<Student>(std::cout, "\n\n"));
        }
        else std::cerr << "Incorrect choice\n";
    }
    else std::cerr << "Can't open file\n";
    fs.close();
    return 0;
}
 
template<typename F>
void Sort(F Student::* pField, std::vector<Student>& v)
{
    StudCompare<F> sc(pField);
    std::sort(v.begin(), v.end(), sc);
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru