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

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

Восстановить пароль Регистрация
 
Шпилька
1 / 1 / 0
Регистрация: 15.05.2012
Сообщений: 68
08.12.2013, 21:42     Сортировка классов #1
Отсортировать жильцов дома в алфавитном порядке, используя классы. Данные должны храниться в текстовом файле

На данный момент вот все что я смогла сделать:
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
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "Russian"); //включаем кириллицу
    ifstream in("dannie.txt");
   ofstream out("result.txt");
   
    list<string> lines;
   while(!in.eof())
   {
      string s1;
      getline(in, s1, '\n');
      lines.push_back(s1);   
   }
   lines.sort();
   copy(lines.begin(), lines.end(), ostream_iterator<string>(out, "\n"));
 
   in.close();
   out.close(); 
   
 
   FILE *f=fopen("result.txt", "r"); 
    int c;
    while( (c = getc(f)) != EOF)
        putchar(c);
    printf("%c", c);
    fclose(f);
    _getch();
    return 0;
}
Но это совсем не классы, может кто что может подсказать????? Пожалуйста
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 21:42     Сортировка классов
Посмотрите здесь:

C++ списки из классов
C++ Сортировка слов по алфавиту с ипользованием классов
Шаблоны классов C++
C++ Классов и обьекты
C++ создание классов
C++ Наследование классов
C++ Шабоны классов
Шаблоны классов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xtorne21st
интересующийся
300 / 271 / 19
Регистрация: 25.09.2010
Сообщений: 1,056
09.12.2013, 01:01     Сортировка классов #2
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;
Yandex
Объявления
09.12.2013, 01:01     Сортировка классов
Ответ Создать тему
Опции темы

Текущее время: 18:53. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru