Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Шпилька
1 / 1 / 0
Регистрация: 15.05.2012
Сообщений: 71
1

Сортировка классов

08.12.2013, 21:42. Просмотров 359. Ответов 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
Ответы с готовыми решениями:

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

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

Сортировка элементов массива классов по определенному полю
есть класс у которого есть несколько полей ,нужно сортировать массив класса за полем exp class...

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

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

1
xtorne21st
интересующийся
304 / 275 / 93
Регистрация: 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

Объекты классов не видны во вложенной функции одной из классов
Такая вот проблема. Есть функция play() класса Game, где создаются объекты классов Game, Character,...

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

Реализация классов-наследников или классов-родителей
Не могу переделать функционал программы таким образом, чтобы у появились классы-наследники, или...


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

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

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