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

Сортировка классов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Неверный возврат из функции http://www.cyberforum.ru/cpp-beginners/thread1033738.html
Краткий экскурс. Есть универсальный класс Matrix<TYPE>, описание его выглядит вот так: /*Matrix.h*/ #ifndef _MATRIX_CLASS #define _MATRIX_CLASS #include <iostream> template <class TYPE> class Matrix
C++ Сбросить значений всех элементов на форме Подскажите как сбросить значений всех элементов на форме. Нужно чтобы форма была как после первого открытия. http://www.cyberforum.ru/cpp-beginners/thread1033736.html
Написать программу, которая упорядочивает существующие множества и определяет объединение двух множеств C++
Помогите пожалуйста с задачей. Очень нужно!!! Нужно написать программу которая упорядочивает существующие множества и определяет объединение двух множеств, порядка n и (n+5).
C++ Практикум
Добрый вечер , прошу у вас помощи с 3 заданием.
C++ Вычисление суммы ряда в C++ http://www.cyberforum.ru/cpp-beginners/thread1033710.html
Помогите пожалуйста балбеске написать программу вычисления суммы ряда \sum_{n=1}^{10} n / (4n^2-1)
C++ шаблонные функции. Ошибка Не признаёт среднее значение и нулевой элемент. #include "stdafx.h" #include <iomanip> #include <iostream> #include <time.h> using namespace std; template <typename T> // максимальное и минимальное значение элементов матрицы: T max(T **mint, int x, int y) подробнее

Показать сообщение отдельно
xtorne21st
интересующийся
304 / 275 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
09.12.2013, 01:01
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
#include <iostream>
#include <fstream>
#include <string>
#include <algorithm>
#include <cstdlib>
#include <vector>
#include <cctype>
 
struct Occupant
{
    Occupant(const std::string& name, const std::string& surname, unsigned apartment)
    {
        _name = name;
        _surname = surname;
        _apartment = apartment;
    }
 
    std::string _name;
    std::string _surname;
    unsigned _apartment;
};
 
class House
{
public:
    void openFile(const std::string& fileName)
    {
        std::ifstream file_in;
 
        file_in.open(fileName.c_str());
 
        if (file_in.is_open() == false)
        {
            std::cerr << "Couldn't open file \'" << fileName << '\'' << std::endl;
            exit(EXIT_FAILURE);
        }
 
        parseInput(file_in);
        file_in.close();
    }
 
    void saveFile(const std::string& fileName)
    {
        std::ofstream out;
        out.open(fileName.c_str());
 
        if (out.is_open() == false)
        {
            std::cerr << "Couldn't open file \'" << fileName << '\'' << std::endl;
            exit(EXIT_FAILURE);
        }
 
 
        std::sort(_occupants.begin(), _occupants.end(), comparand);
 
        out << "Sorted by names:" << std::endl;
        for (size_t i = 0; i < _occupants.size(); ++i)
        {
            out << "apartment: " << _occupants[i]->_apartment
                << ", name: " << _occupants[i]->_name
                << ", surname: " << _occupants[i]->_surname << std::endl;
        }
    }
 
private:
    void parseInput(std::istream& file_in)
    {
        std::vector<std::string> fileStrings;
        std::string buf;
 
        while(std::getline(file_in, buf))
        {
            fileStrings.push_back(buf);
        }
 
        for (size_t i = 0; i < fileStrings.size(); ++i)
        {
            std::string ap;
            std::string name;
            std::string surname;
            size_t j = 0;
 
            j = skipNoCharacter(fileStrings[i], j);
 
            while (fileStrings[i][j] != ':')
            {
                ap.push_back(fileStrings[i][j]);
                ++j;
            }
 
            j = skipNoCharacter(fileStrings[i], j);
 
            while (isalnum(fileStrings[i][j]) != false)
            {
                name.push_back(fileStrings[i][j]);
                ++j;
            }
 
            j = skipNoCharacter(fileStrings[i], j);
 
            while (isalnum(fileStrings[i][j]) != false)
            {
                surname.push_back(fileStrings[i][j]);
                ++j;
            }
 
            for (std::string::iterator it = ap.begin(); it != ap.end();)
            {
                if (!isdigit(*it))
                {
                    ap.erase(it);
                    it = ap.begin();
                }
                else
                {
                    ++it;
                }
            }
 
            _occupants.push_back(new Occupant(name, surname, atoi(ap.c_str())));
        }
    }
 
    size_t skipNoCharacter(const std::string& inputString, size_t position)
    {
        while (isalpha(inputString[position]) == false)
        {
            ++position;
        }
 
        return position;
    }
 
    static bool comparand(const Occupant* left, const Occupant* right)
    {
        return left->_name < right->_name;
    }
 
private:
    std::vector<Occupant*> _occupants;
};
 
int main()
{
    House house;
 
    house.openFile("house_in.txt");
    house.saveFile("house_out.txt");
 
    std::cout << "done!" << std::endl;
}
house_in.txt:
ap.1: Greg Korshunov;
ap.2: Alex Ivanov;
ap.3: Sofia Babich.
ap.4: Illia Ivantsok;
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru