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

Создание двух объектов класса Employee - C++

Восстановить пароль Регистрация
 
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
09.04.2014, 21:07     Создание двух объектов класса Employee #1
Напишите программу с использованием класса Emloyee, два объекта класса Employee, устанавливает значения членов itsAge, itsYearOfService, и itsSalary а затем отображает их на экране.

Ну я начала реализацию кода

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
#include<iostream>
using namespace std;
using std::cout;
using std::cin;
 
class Employee
{
public:
    Employee(int age, int year, int salary);
    ~Employee();
    int  setAge (int age);
    void GetAge ( int age) const;
    int GetsetYearOfService (int year) const;
    void setYearOfService (int year);
    int GetsetSalary( int salary) const;
    void setSalary(int salary);
private:
    int itsAge;
    int itsYearOfService;
    int itsSalary;
};
 
 
int  Employee::setAge(int age)
{
    cin >> " Personal age: ";
    cin >> age;
    itsAge = age;
    cout << itsAge << "vozrast personala:";
    
}
 
void Employee::setYearOfService(int year)
{
    cin >> year;
    itsYearOfService = year;
}
 
void Employee::setSalary(int salary)
{
    cin >> salary;
    itsSalary = salary;
}
 
int main()
{
    Employee;
    Employee.setAge;
    system( "PAUSE");
}
Пока создал один объект - не удается установить значения и кажется реализация void у меня не совсем верна, что в ней не так -?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
6051 / 5654 / 1827
Регистрация: 18.12.2011
Сообщений: 14,444
Завершенные тесты: 1
09.04.2014, 21:26     Создание двух объектов класса Employee #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
#include<iostream>
using namespace std;
class Employee
{
public:
    Employee(int age, int year, int salary):itsAge(age),itsYearOfService(year), itsSalary(salary){}
    int  setAge (int age);
    int GetAge () const{return itsAge;}
    int GetYearOfService (int year) const{return itsYearOfService;}
    void setYearOfService (int year);
    int GetSalary( int salary) const{return itsSalary;}
    void setSalary(int salary);
private:
    int itsAge;
    int itsYearOfService;
    int itsSalary;
};
int  Employee::setAge(int age)
{
    itsAge = age;
}
 
void Employee::setYearOfService(int year)
{
    itsYearOfService = year;
}
 
void Employee::setSalary(int salary)
{
    itsSalary = salary;
}
int main()
{
    Employee first(10,2014,15500);
    first.setAge(25);
    cout<<first.GetAge();
    Employee second(17,2013,27000);
    second.setSalary(29000); 
    cout<< second.GetSalary();
    system( "PAUSE");
}
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
09.04.2014, 23:10  [ТС]     Создание двух объектов класса Employee #3
Доработал код:

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
#include<iostream>
using namespace std;
using std::cout;
using std::cin;
 
class Employee
{
public:
    Employee(int age, int year, int salary);
    ~Employee();
    int  setAge (int age);
    void GetAge ( int age) const;
    int GetsetYearOfService (int year) const;
    void setYearOfService (int year);
    int GetsetSalary( int salary) const;
    void setSalary(int salary);
private:
    int itsAge;
    int itsYearOfService;
    int itsSalary;
};
 
 
int Employee::GetAge () const;
{
         return itsAge;
}
 
void Employee::setAge (int age)
{
    return itsAge = age;
}
 
int Employee::GetsetYearOfService () const;
{
    return itsYearOfService;
}
 
void Employee::setYearOfService (int year);
{
    return  itsYearOfService = year;
}
 
int Employee::GetsetSalary () const;
{
    retrurn itsSalary;
}
 
void Employee::setSalary (int salary);
{
  return setSalary = salary;
}
      
int main()
{
    Employee One;
    Employee Two;
    One.setAge(30);
    One.setYearOfService(40);
    One.setSalary(5000);
    Two.setAge(30);
    Two.setYearOfService(40);
    Two.setSalary(6000);
    cout << " One /n";
    cout << "Age" <<  One.GetAge() <<"\n";
    cout << "YearOfService" << One.GetsetYearOfService() <<"\n";
    cout << "Salary" << One.GetsetSalary() << "\n";
    cout << "Two /n";
    cout << "Age" << Two.GetAge() << "\n";
    cout << "YearOfService" << Two.GetsetYearOfService() << "\n";
    cout << "YearOfService" << Two.GetsetSalary() << "\n";
    system ("PAUSE");
 
}
Может все дело в конструкторе-?

Если так:

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
#include<iostream>
using namespace std;
class Employee
{
public:
    Employee(int age, int year, int salary):itsAge(age),itsYearOfService(year), itsSalary(salary){}
    int  setAge (int age);
    int GetAge () const{return itsAge;}
    int GetYearOfService (int year) const{return itsYearOfService;}
    void setYearOfService (int year);
    int GetSalary( int salary) const{return itsSalary;}
    void setSalary(int salary);
private:
    int itsAge;
    int itsYearOfService;
    int itsSalary;
};
int  Employee::setAge(int age)
{
    itsAge = age;
}
 
void Employee::setYearOfService(int year)
{
    itsYearOfService = year;
}
 
void Employee::setSalary(int salary)
{
    itsSalary = salary;
}
int main()
{
    Employee first(10,2014,15500);
    first.setAge(25);
    cout<<first.GetAge();
    Employee second(17,2013,27000);
    second.setSalary(29000); 
    cout<< second.GetSalary();
    system( "PAUSE");
}
Добавлено через 5 минут
Пишет:

C++
1
2
3
4
Построение начато: проект: My.Class, Конфигурация: Debug Win32 ------
1>  My.Class.cpp
1>c:\users\игорь\documents\visual studio 2010\projects\my.class\my.class\my.class.cpp(40): error C2660: Employee::GetSalary: функция не принимает 0 аргументов
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Добавлено через 6 минут
Немного не понятно:

Employee first(10,2014,15500);

Код
Как не вызывая ни каких методов мы сразу устанавливаем значение в 10,2014,15500 -?
Добавлено через 42 минуты
Как реализовать :

C++
1
2
3
int  setAge (int age);
int GetAge () const{return itsAge;}
int GetYearOfService (int year) const{return itsYearOfService;}
Такая реализация не работает;

C++
1
2
3
4
int GetAge () const;
{
   return itsAge;
}
arcana
 Аватар для arcana
2 / 2 / 2
Регистрация: 20.09.2013
Сообщений: 20
10.04.2014, 01:25     Создание двух объектов класса Employee #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от zero-11 Посмотреть сообщение
Код Code
1
Как не вызывая ни каких методов мы сразу устанавливаем значение в 10,2014,15500 -?
Конструктор по умолчанию.

Добавлено через 4 минуты

Добавлено через 1 минуту
ладно, щас набросаю

Добавлено через 30 минут
zero-11, вот, создаете 3 файла:
- Employee.h (описание класса и прототипы функций)
- Employee.cpp (реализация функций)
- main.cpp
и так наш .h файл:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
using namespace std;
 
class Employee 
{
private:
    int tsAge, itsYearOfService, itsSalary;
 
    
 
    public:
        
        void setAge(int settedAge);
        void setService(int settedService);
        void setSalary(int settedSalart);
 
        int getAge();
        int getService();
        int getSalary();
        Employee();
};
Дале Employee.cpp
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
#include <iostream>
#include "Employee.h"
 
using namespace std;
 
Employee::Employee()
{
 
}
 
void Employee::setAge(int settedAge)
{
    this->tsAge = settedAge;
}
void Employee::setSalary(int settedSalary)
{
    this->itsSalary = settedSalary;
}
void Employee::setService(int settedService)
{
    this->itsYearOfService = settedService;
}
 
int Employee::getAge()
{
    return Employee::tsAge;
}
int Employee::getService()
{
    return Employee::itsYearOfService;
}
int Employee::getSalary()
{
    return Employee::itsSalary;
}
Дальше main.cpp
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
#include <iostream>
#include "Employee.h"
 
using namespace std;
 
int main() 
{
 
    int tempAge = 0;
    int tempService = 0;
    int tempSalary = 0;
    Employee * fistMan = new Employee;
    Employee * secondMan = new Employee;
 
    cout << "Enter the options of 1st worker: " << endl;
    cout << "Age is: "; cin >> tempAge;
    fistMan->setAge(tempAge);
    cout << "Service is: " ; cin >> tempService;
    fistMan->setService(tempService);
    cout << "Salary is: "; cin >> tempSalary;
    fistMan->setSalary(tempSalary);
 
    cout << "Options of 1st worker:" << endl;
    cout << fistMan->getAge() << endl << fistMan->getService() << endl << fistMan->getSalary() << endl;
 
    system("pause");
 
}
Сделаете заполнение и вывод второго объекта сами по аналогии.
+ можете оформить вывод в функцию, у меня просто нет времени.
Програма работает.
Создание двух объектов класса Employee
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
10.04.2014, 13:57  [ТС]     Создание двух объектов класса Employee #5
Cпасибо - но компилятор опять уперся в эту ошибку:

Код
c:\users\игорь\documents\visual studio 2010\projects\my.class\my.class\my.class.cpp(22): error C4716: Employee::setAge: должна возвращать значение
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
Emloyee::setAge - должна возвращать значение.

Добавлено через 23 минуты
Создал три файла:

Emplyee.h
Employe.cpp
main.cpp

студия нигде не видит ошибок - а при компиляции выдает ссылку на строку - Employee::setAge - должна возвращать значение!При этом компилятор практически создает exe.файл - вылетает в самом конце.

Добавлено через 33 минуты
Все работает, спасибо - просто подключил дополнительные лишние файлы.
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
10.04.2014, 15:35  [ТС]     Создание двух объектов класса Employee #6
Я получил нужный результат, cоздал два объекта и установил их значения, как и требовалось, но мне нужно создать метод класса, который будет выводит сколько получает служащий - я его создал, но нужно что бы метод округлял получены значения:

Создание двух объектов класса Employee

Код:

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
#include <iostream>
 using namespace std;
 
class Employee 
{
private:
    int tsAge, itsYearOfService, itsSalary;
 
    
 
    public:
        
        void setAge(int settedAge);
        void setService(int settedService);
        void setSalary(int settedSalart);
        void worked() const { std::cout << "worked is 5000"; } 
        
        int getAge();
        int getService();
        int getSalary();
        
        Employee();
};
 
using namespace std;
 
 
Employee::Employee()
{
 
}
 
void Employee::setAge(int settedAge)
{
    this->tsAge = settedAge;
}
void Employee::setSalary(int settedSalary)
{
    this->itsSalary = settedSalary;
}
void Employee::setService(int settedService)
{
    this->itsYearOfService = settedService;
}
 
int Employee::getAge()
{
    return Employee::tsAge;
}
int Employee::getService()
{
    return Employee::itsYearOfService;
}
int Employee::getSalary()
{
    return Employee::itsSalary;
}
 
 
 
using namespace std;
 
int main() 
{
 
    int tempAge = 0;
    int tempService = 0;
    int tempSalary = 0;
    Employee * fistMan = new Employee;
    Employee * secondMan = new Employee;
 
    fistMan->worked();
 
    cout << "Enter the options of 1st worker: " << endl;
    cout << "Age is: "; cin >> tempAge;
    fistMan->setAge(tempAge);
    cout << "Service is: " ; cin >> tempService;
    fistMan->setService(tempService);
    cout << "Salary is: "; cin >> tempSalary;
    fistMan->setSalary(tempSalary);
    
 
    cout << "Options of 1st worker:" << endl;
    cout << fistMan->getAge() << endl << fistMan->getService() << endl << fistMan->getSalary() << endl;
    cout << "Enter the option of 1st worker: " << endl;
    cout << "Age is: "; cin >> tempAge;
    secondMan->setAge(tempAge);
    cout << "Salary is: "; cin >> tempSalary;
    secondMan->setSalary(tempSalary); 
 
    cout << "Option of 2st worker:" << endl;
    cout << "Age is: "; cin >> tempAge;
    secondMan->setAge(tempAge);
    cout << "Service is: "; cin >> tempService;
    secondMan->setService(tempService);
    cout << "Salary is: "; cin >> tempSalary;
    secondMan->setSalary(tempSalary);
 
    cout << "Options of 2st worker:" << endl;
    cout << secondMan->getAge() << endl << secondMan->getService() << endl << secondMan->getSalary() << endl;
    cout << "Enter the option of 2st worker: " << endl;
    cout << "Age is: "; cin >> tempAge;
    secondMan->setAge(tempAge);
    cout << "Salary is: "; cin >> tempSalary;
    secondMan->setSalary(tempSalary);
 
 
    system("pause");
 
}
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
10.04.2014, 15:43  [ТС]     Создание двух объектов класса Employee #7
Я думаю нужно использовать float - но как ее здесь реализовать -?Передать ее в реализации void в качестве параметра-?

C++
1
2
3
4
void Employee::worked( float setWorked )
{
    return  itsworked = setWorked;
}
Или можно иначе реализовать-?
arcana
 Аватар для arcana
2 / 2 / 2
Регистрация: 20.09.2013
Сообщений: 20
10.04.2014, 21:11     Создание двух объектов класса Employee #8
Сообщение было отмечено автором темы, экспертом или модератором как ответ
zero-11, если Вам нужно, что бы зарплата была вида целое.десятые, то вам нужно поменять типы функций set и get на float/double. Также вам надо изменить тип временных переменных (tmpПеременная) на float/double.
Ну и сделать функцию, которая округляет число, вообще легче всего выделить целую часть с помощю деления без остачи, но в этом случае это будет не корректно.
Но статей и ответов по округлению уйма.
Как выделить целую часть из числа ?
Можна так, как там написано, а можна поискать в гугле. К сожалению не могу сейчас написать код, так как вдали от ПК.
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
10.04.2014, 21:16  [ТС]     Создание двух объектов класса Employee #9
Я менял - компилятор выдает ошибки - преобразования целого int - в double - может привести к потери данных - я поищу. Спасибо.
arcana
 Аватар для arcana
2 / 2 / 2
Регистрация: 20.09.2013
Сообщений: 20
10.04.2014, 21:32     Создание двух объектов класса Employee #10
zero-11, а вы поменяли принимаемые типы ? Вообще нажмите ctrl + h и тупо замените int на float/double, ничего страшного впринципе не произойдет, зато ошибок точно не будет, просто я не имею доступа к ПК.
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
10.04.2014, 22:00  [ТС]     Создание двух объектов класса Employee #11
Да все работает - поменял принимаемые типы на double - осталось функцию округления реализовать.
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
11.04.2014, 11:40  [ТС]     Создание двух объектов класса Employee #12
Пробовал реализовать функцию - не округляет значения.

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
#include <iostream>
 using namespace std;
 
class Employee 
{
private:
    double tsAge, itsYearOfService, itsSalary, itsWorked;
 
     public:
        
        double variable;
 
        void setAge(double settedAge);
        void setService(double settedService);
        void setSalary(double settedSalart);
        void setWorked( double settWorked);
        
        double getAge();
        double getService();
        double getSalary();
        double getWorked();
 
        
        Employee();
};
 
using namespace std;
 
 
Employee::Employee()
{
 
}
 
void Employee::setAge(double settedAge)
{
    this->tsAge = settedAge;
}
void Employee::setSalary(double settedSalary)
{
    this->itsSalary = settedSalary;
}
void Employee::setService(double settedService)
{
    this->itsYearOfService = settedService;
}
 
void Employee::setWorked(double settWorked)
{
    this->itsWorked = settWorked;
    int int_itsWorked=(int)itsWorked;
}
 
 
double Employee::getAge()
{
    return Employee::tsAge;
}
double Employee::getService()
{
    return Employee::itsYearOfService;
}
double Employee::getSalary()
{
    return Employee::itsSalary;
}
double Employee::getWorked()
{
    return Employee::itsWorked;
    std::cout << " its money";
}
 
 
 
using namespace std;
 
int main() 
{
 
    double tempAge = 0;
    double tempService = 0;
    double tempSalary = 0;
    double tempSetWorked=0;
 
    Employee * fistMan = new Employee;
    Employee * secondMan = new Employee;
 
    
    
    cout << "Enter the options of 1st worker: " << endl;
    cout << "Age is: "; cin >> tempAge;
    fistMan->setAge(tempAge);
    cout << "Service is: " ; cin >> tempService;
    fistMan->setService(tempService);
    cout << "Salary is: "; cin >> tempSalary;
    fistMan->setSalary(tempSalary);
    cout << "Enter tempSetworked: "; cin >> tempSetWorked;
    fistMan->setWorked(tempSetWorked);
 
    cout << "Options of 1st worker:" << endl;
    cout << fistMan->getAge() << endl << fistMan->getService() << endl << fistMan->getSalary() << endl;
    cout << fistMan->getWorked() << endl;
    cout << "Enter the option of 1st worker: " << endl;
    cout << "Age is: "; cin >> tempAge;
    secondMan->setAge(tempAge);
    cout << "Salary is: "; cin >> tempSalary;
    secondMan->setSalary(tempSalary); 
 
    cout << "Option of 2st worker:" << endl;
    cout << "Age is: "; cin >> tempAge;
    secondMan->setAge(tempAge);
    cout << "Service is: "; cin >> tempService;
    secondMan->setService(tempService);
    cout << "Salary is: "; cin >> tempSalary;
    secondMan->setSalary(tempSalary);
 
    cout << "Options of 2st worker:" << endl;
    cout << secondMan->getAge() << endl << secondMan->getService() << endl << secondMan->getSalary() << endl;
    cout << "Enter the option of 2st worker: " << endl;
    cout << "Age is: "; cin >> tempAge;
    secondMan->setAge(tempAge);
    cout << "Salary is: "; cin >> tempSalary;
    secondMan->setSalary(tempSalary);
 
 
    system("pause");
 
}
использовал определение метода функции:

void Employee::setWorked(double settWorked)

C++
1
2
3
4
{
    this->itsWorked = settWorked;
    int int_itsWorked=(int)itsWorked;
}
должна значение с плавающий точкой преобразовывать в цело число :

Код
int int_itsWorked=(int)itsWorked;
Выдает следующий результат:

Создание двух объектов класса Employee
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.04.2014, 13:12     Создание двух объектов класса Employee
Еще ссылки по теме:

C++ Создание объектов класса пользователем
C++ Создание массива объектов класса
C++ Записать в файл данные о рабочих без применения массива объектов (структура Employee)
C++ Создание объектов класса
Создание класса абстрактных объектов C++

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

Или воспользуйтесь поиском по форуму:
zero-11
 Аватар для zero-11
0 / 0 / 0
Регистрация: 21.03.2014
Сообщений: 56
11.04.2014, 13:12  [ТС]     Создание двух объектов класса Employee #13
Я добился округления, но не до конца:

так у меня 25.30 - 25.3 - а мне нужно что бы к примеру 999.9 - 1000 - округлял до тысячи - может кто знает, как более грамотно применить функцию округления, что бы получить нужный результат-?

Добавлено через 43 минуты
Все реализовал.

C++
1
2
3
4
5
6
7
8
9
void Employee::Worked()
{
    
    int a = 1354;
    a/=100;
    if (a%10>=5){a+=10;}
    a=a/10*1000;
    cout << a;
}
Просто хотел реализовать встраиваемую функция в самом классе - но это не дало нужного результата - реализовал используя конструкцию if - в определении метода.
Yandex
Объявления
11.04.2014, 13:12     Создание двух объектов класса Employee
Ответ Создать тему
Опции темы

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