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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Шпилька
1 / 1 / 0
Регистрация: 15.05.2012
Сообщений: 71
#1

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

08.12.2013, 21:42. Просмотров 298. Ответов 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;
}
Но это совсем не классы, может кто что может подсказать????? Пожалуйста
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.12.2013, 21:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сортировка классов (C++):

Сортировка массива классов по алфавиту - C++
Не получается сортировка массива строк типа класс вот программа. 3 записи сортирует правильно, 4 и более не получается. ставит все...

Сортировка слов по алфавиту с ипользованием классов - C++
Есть задание - написать программу, которая бы сортировала слова в строке по алфавиту. У меня есть такой вот алгоритм. Надо его...

Разработать иерархию классов, демонстрирующее работу с коллекцией объектов разных классов - C++
Задание: Разработать в соответствии с индивидуальным заданием иерархию классов и приложение, демонстрирующее работу с коллекцией объектов...

Вынести методы из классов Panel и PictureBox (явная реализация методов базовых абстрактных классов) - C++
Тема: Множественное наследование. Явная реализация методов базовых абстрактных классов. Как вынести методы из классов Panel и...

Реализация отношения классов типа двунаправленная ассоциация, UML, порядок объявления классов, неполный класс - C++
Доброго времени суток! Осваивая UML, решил реализовать отношение двунаправленной ассоциации по диаграмме: У одного владельца...

Преобразования объектов классов в объекты других классов - C++
Задача типа обмен валют. Нужно конвертировать старый фунт стерлинг(фунт, шиллинг и пенсы) в доллары и обратно, по курсу 1 фунт = 50...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
xtorne21st
интересующийся
304 / 275 / 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;
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2013, 01:01
Привет! Вот еще темы с ответами:

Наследование классов. Копирование производных классов - C++
Здравствуйте всем, у меня такой вопрос: написал код #include &quot;stdafx.h&quot; class A //Создаем класс А { int mA; ...

Множественное наследование, Перегрузка функций, Перегрузка операторов, Использование дружественных функций и классов, Использование шаблонов классов - C++
Здравствуйте!!! Я бы хотел попросить помоч решить...ну или скинуть примеры таких задач, если вдруг у вас они завалялись на компе или...

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется - C++
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком или сортировка Шелла. Вот она то и не...

Сортировка слиянием. В каком куске кода происходит сортировка и каким именно образом? - C++
Помогите, пожалуйста, разобраться. Подскажите в каком куске кода происходит сортировка и каким именно образом? #include &lt;iostream&gt; ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru