Форум программистов, компьютерный форум 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... 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
1648 / 1276 / 133
Регистрация: 21.12.2010
Сообщений: 1,932
Записей в блоге: 7
22.01.2012, 10:42
зациклить можно так
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
#include <iostream>
#include <string>
#include <algorithm>
#include <vector>
#include <fstream>
#include <iterator>
 
struct Student
{
    std::string name, surname, patronym, group;
    unsigned short 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", std::ios::in);
    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() returns " << v.size() << "\n\n";
        char isContinue;
        unsigned short criterion;
        do
        {
            std::cout << "Input sort criterion(1 - 5): 1 - surname, 2 - name, 3 - patronym, "
            "4 - group, 5 - mark\n";
            std::cin >> criterion;
            if(criterion >= 1 && criterion <= 5)
            {
                switch(criterion)
                {
                    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";
            std::cout << "Continue? (y / n) : ";
            std::cin >> isContinue;
            std::cin.sync();
        } while('y' == isContinue || 'Y' == isContinue);
    }
    else std::cerr << "Can't open file\n";
    fs.close();
    return 0;
}
 
template<typename F>
void Sort(F Student::* pField, std::vector<Student>& v)
{
    std::sort(v.begin(), v.end(), StudCompare<F>(pField));
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru