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

Классы C++, коллекции и сортировка - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.78
SeoBee
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 5
19.08.2013, 20:41     Классы C++, коллекции и сортировка #1
Есть небольшое задание. Не могу понять как это все организировать, особенно с коллекциями и сортировкой.

"ЗАДАЧА. Построить три класса (базовый и 2 потомки), описывающих некоторых работников с почасовой
оплатой (один из потомков) и фиксированной оплатой (второй потомок). Описать в базовом классе
абстрактный метод для расчета среднемесячной заработной платы. Для «повременщиков» формула
для расчета такова: «среднемесячная заработная плата = 20.8 * 8 * почасовую ставку», для работников с
фиксированной оплатой «среднемесячная заработная плата = фиксированной месячной оплате».
a) Сортировать всю последовательность работников по убыванию среднемесячного заработка. при
совпадении зарплаты - упорядочивать данные по алфавиту по имени. вывести идентификатор
работника, имя и среднемесячный заработок для всех элементов списка.
b) Вывести первые 5 имен работников из полученного выше списка (задача А).
c) Вывести последние 3 идентификаторы работников из полученного выше списка (задача А).
d) организовать запись и чтение коллекции в / из файл (а)
e) организовать обработку некорректного формата входного файла"

В случаи решения готов оплатить по WebMoney
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
19.08.2013, 20:49     Классы C++, коллекции и сортировка #2
SeoBee, STL разрешено использовать?
SeoBee
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 5
19.08.2013, 20:55  [ТС]     Классы C++, коллекции и сортировка #3
proger_55, Да
Ded_Vasilij
 Аватар для Ded_Vasilij
229 / 211 / 15
Регистрация: 01.09.2012
Сообщений: 2,103
19.08.2013, 20:58     Классы C++, коллекции и сортировка #4
приложение консольное?
SeoBee
0 / 0 / 0
Регистрация: 25.02.2013
Сообщений: 5
19.08.2013, 21:42  [ТС]     Классы C++, коллекции и сортировка #5
proger_55, да

Добавлено через 37 минут
Есть уже почти готовый клас только без функции сортировки.

C++ (Qt)
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
#include <iostream>
#include <string>
#include <vector>
using namespace std;
 
//BASED CLASS
class Employee
{
    private:
              string name;
              int id;
    protected:
              double total_salary;
    public:
              Employee(const string & n = "Unknown", int i = 0);
              virtual void calc_salary() = 0;
              void show();
              friend bool operator<(const Employee & r1, const Employee & r2);
              //friend bool worseThan(const Employee & r1, const Employee & r2);
              virtual ~Employee(){}
};
 
Employee::Employee(const string & n, int i) : name(n), id(i){}
void Employee::calc_salary(){}
void Employee::show()
{
     cout << "Name:\t" << name << endl;
     cout << "ID:\t" << id << endl;
     cout << "Salary:\t" << total_salary << endl << endl;
}
//Monthly salary
class Employee_monthly : public Employee
{
      private:
              double m_salary;
      public:
              Employee_monthly(const string & n = "Unknown", int i = 0, double m_sal = 0.0);
              virtual void calc_salary();
              
};
 
Employee_monthly::Employee_monthly(const string & n, int i, double m_sal) : Employee(n,i)
{
    m_salary = m_sal;
}
 
void Employee_monthly::calc_salary()
{
     total_salary = m_salary;
}
 
 
//Hourly salary
class Employee_hourly : public Employee
{
      private:
              double h_salary;
      public:
              Employee_hourly(const string & n = "Unknown", int i = 0, double h_sal = 0.0);
              virtual void calc_salary();
};
 
Employee_hourly::Employee_hourly(const string & n, int i, double h_sal) : Employee(n,i)
{
    h_salary = h_sal;
}
void Employee_hourly::calc_salary()
{
     total_salary = 20.8 * 8 * h_salary;
}
 
bool operator<(const Employee & r1, const Employee & r2)
{
    if (r1.total_salary > r2.total_salary)
        return true;
    else if (r1.total_salary == r2.total_salary && r1.name < r2.name)
        return true;
    else
        return false;
}
 
int main()
{
    Employee_monthly Joe("Joe", 5675, 2000);
    Joe.calc_salary();
    
    Employee_hourly Bob("Bob", 8854, 12);
    Bob.calc_salary();
    
    Employee_hourly Mike("Mike", 6765, 13);
    Mike.calc_salary();
    
    Employee_monthly August("August", 6556, 3000);
    August.calc_salary();
    
    vector<Employee*>employees(4);
    employees[0] = &Bob;
    employees[1] = &Joe;
    employees[2] = &Mike;
    employees[3] = &August;
    
    employees[0]->show();
    employees[1]->show();
    employees[2]->show();
    employees[3]->show();
    
  
    
    cout << "Sorted:\n";
    employees[0]->show();
    employees[1]->show();
    employees[2]->show();
    employees[3]->show();
    system("PAUSE");
    return 0;   
}
zer0mail
2189 / 1872 / 187
Регистрация: 03.07.2012
Сообщений: 6,667
Записей в блоге: 1
24.08.2013, 18:04     Классы C++, коллекции и сортировка #6
C++ (Qt)
1
2
3
4
5
6
7
8
9
// берешь функцию
bool worseThan(const Employee *r1,const Employee *r2)  {
    if (r1->total_salary != r2->total_salary)
    return r1->total_salary > r2->total_salary;
    return r1->name < r2->name;
}
....
// и используешь ее в сортировке:
    sort(employees.begin(),employees.end(),worseThan);
Yandex
Объявления
24.08.2013, 18:04     Классы C++, коллекции и сортировка
Ответ Создать тему
Опции темы

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