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

Связной список и сортировка - C++

Восстановить пароль Регистрация
 
masikus
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 36
06.05.2013, 07:50     Связной список и сортировка #1
Помогите написать прогу:
Реализующую связный список с информацией о сотрудниках и отображающую список в порядке возрастания возраста сотрудника

В виду
Фамилия Имя Отчество Возраст
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.05.2013, 07:50     Связной список и сортировка
Посмотрите здесь:

C++ Список сортировка
C++ Связной список
Связной список в Си++ C++
связной список (отсортировать по ключу) C++
Построить связной список C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
06.05.2013, 13:37     Связной список и сортировка #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
#include <iostream>
#include <algorithm>
#include <list>
#include <string>
#include <iterator>
class Employee
{
    std::string lastname_;
    std::string name_;
    std::string surname_;
    size_t age_;
public:
    Employee(std::string lastname, std::string name, std::string surname, size_t age):
      lastname_(lastname), name_(name), surname_(surname), age_(age) {}
    friend std::ostream& operator << (std::ostream&, const Employee&); 
    bool operator < (const Employee& obj) const
    {
        return age_ < obj.age_;
    }
};
std::ostream& operator << (std::ostream& t, const Employee& obj)
{
    return t << obj.lastname_ << ' ' << obj.name_ << ' ' << obj.surname_ << ' ' << obj.age_ << '\n';
}
int main()
{
    std::list<Employee> l;
    l.push_back(Employee("lname1","name1","sname1",30));
    l.push_back(Employee("lname2","name2","sname2",27));
    l.push_back(Employee("lname3","name3","sname3",28));
    l.sort();
    std::copy(l.begin(), l.end(), std::ostream_iterator<Employee>(std::cout));
    system("pause");
}
Bend3r
 Аватар для Bend3r
142 / 129 / 17
Регистрация: 29.07.2012
Сообщений: 684
06.05.2013, 13:56     Связной список и сортировка #3
Цитата Сообщение от BumerangSP Посмотреть сообщение
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
#include <iostream>
#include <algorithm>
#include <list>
#include <string>
#include <iterator>
class Employee
{
    std::string lastname_;
    std::string name_;
    std::string surname_;
    size_t age_;
public:
    Employee(std::string lastname, std::string name, std::string surname, size_t age):
      lastname_(lastname), name_(name), surname_(surname), age_(age) {}
    friend std::ostream& operator << (std::ostream&, const Employee&); 
    bool operator < (const Employee& obj) const
    {
        return age_ < obj.age_;
    }
};
std::ostream& operator << (std::ostream& t, const Employee& obj)
{
    return t << obj.lastname_ << ' ' << obj.name_ << ' ' << obj.surname_ << ' ' << obj.age_ << '\n';
}
int main()
{
    std::list<Employee> l;
    l.push_back(Employee("lname1","name1","sname1",30));
    l.push_back(Employee("lname2","name2","sname2",27));
    l.push_back(Employee("lname3","name3","sname3",28));
    l.sort();
    std::copy(l.begin(), l.end(), std::ostream_iterator<Employee>(std::cout));
    system("pause");
}
Забыли дописать
C++
1
#include <Windows>
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
06.05.2013, 14:00     Связной список и сортировка #4
Bend3r, windows.h? А для чего? system("pause")? Для этого достаточно cstdlib подключить. Для студии, в которой писал - этого не требуется. Для остальных в основном system и не нужен.
Tulosba
06.05.2013, 14:03
  #5

Не по теме:

Цитата Сообщение от Bend3r Посмотреть сообщение
Забыли дописать
#include <Windows>
А если код под Linux?

BumerangSP
06.05.2013, 14:05
  #6

Не по теме:

Tulosba, тогда на system() (33 строчка) будет ошибка

Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.05.2013, 14:21     Связной список и сортировка #7
BumerangSP, почему? это же просто вызов команды через шелл.
https://ideone.com/Tz9QSU // просто "pause" нет такой стандартной команды, но никто не мешает добавить
Или Вы не про ошибку компиляции?
BumerangSP
06.05.2013, 14:33
  #8

Не по теме:

Tulosba, про pause.
Да не нужна она там, это после студии я не убрал)

masikus
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 36
06.05.2013, 15:21  [ТС]     Связной список и сортировка #9
Цитата Сообщение от BumerangSP Посмотреть сообщение
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
#include <iostream>
#include <algorithm>
#include <list>
#include <string>
#include <iterator>
class Employee
{
    std::string lastname_;
    std::string name_;
    std::string surname_;
    size_t age_;
public:
    Employee(std::string lastname, std::string name, std::string surname, size_t age):
      lastname_(lastname), name_(name), surname_(surname), age_(age) {}
    friend std::ostream& operator << (std::ostream&, const Employee&); 
    bool operator < (const Employee& obj) const
    {
        return age_ < obj.age_;
    }
};
std::ostream& operator << (std::ostream& t, const Employee& obj)
{
    return t << obj.lastname_ << ' ' << obj.name_ << ' ' << obj.surname_ << ' ' << obj.age_ << '\n';
}
int main()
{
    std::list<Employee> l;
    l.push_back(Employee("lname1","name1","sname1",30));
    l.push_back(Employee("lname2","name2","sname2",27));
    l.push_back(Employee("lname3","name3","sname3",28));
    l.sort();
    std::copy(l.begin(), l.end(), std::ostream_iterator<Employee>(std::cout));
    system("pause");
}
спасибо
еще если не сложно можете пояснить несколько частей кода, а именно
C++
1
2
3
4
5
6
7
8
9
10
    friend std::ostream& operator << (std::ostream&, const Employee&); 
    bool operator < (const Employee& obj) const
    {
        return age_ < obj.age_;
    }
};
std::ostream& operator << (std::ostream& t, const Employee& obj)
{
    return t << obj.lastname_ << ' ' << obj.name_ << ' ' << obj.surname_ << ' ' << obj.age_ << '\n';
}
C++
1
    std::copy(l.begin(), l.end(), std::ostream_iterator<Employee>(std::cout));
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
06.05.2013, 15:26     Связной список и сортировка #10
C++
1
friend std::ostream& operator << (std::ostream&, const Employee&);
Перегрузка оператора вывода в поток. Чтобы можно было вывести данные через cout.
C++
1
bool operator < (const Employee& obj) const
Перегрузка оператора "<". Нужна для сортировки именно по возрасту.
C++
1
return t << obj.lastname_ << ' ' << obj.name_ << ' ' << obj.surname_ << ' ' << obj.age_ << '\n';
То, что было вверху для оператора "<<" - это описание. Здесь же его реализация.
C++
1
std::copy(l.begin(), l.end(), std::ostream_iterator<Employee>(std::cout));
Так мы выводим все содержимое списка на экран (с помощью потокового итератора).
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.05.2013, 15:31     Связной список и сортировка #11
Цитата Сообщение от BumerangSP Посмотреть сообщение
Перегрузка оператора "<". Нужна для сортировки именно по возрасту.
Не обязательно. Можно просто использовать сортировку с заданным методом сравнения.
masikus
2 / 2 / 0
Регистрация: 03.03.2013
Сообщений: 36
06.05.2013, 15:31  [ТС]     Связной список и сортировка #12
большое спасибо
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2013, 15:33     Связной список и сортировка
Еще ссылки по теме:

C++ Необходимо создать связной список с записью в файл и восстановлением из файла
Связной список / дерево C++
Не получается очистить связной список C++

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

Или воспользуйтесь поиском по форуму:
BumerangSP
 Аватар для BumerangSP
4283 / 1405 / 121
Регистрация: 16.12.2010
Сообщений: 2,941
Записей в блоге: 3
06.05.2013, 15:33     Связной список и сортировка #13
Tulosba, как вариант.
Yandex
Объявления
06.05.2013, 15:33     Связной список и сортировка
Ответ Создать тему
Опции темы

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