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

Класс Employee, проблемы реализации - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
TBIKC
web dev
 Аватар для TBIKC
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
20.08.2011, 21:19     Класс Employee, проблемы реализации #1
Задание:
Создайте класс с именем Employee («служащий»), включающий в качестве
элементов данных три информационных пункта: имя (тип string), фамилию (тип
string) и месячную зарплату (тип int). Ваш
класс должен иметь конструктор, инициализирующий три элемента данных.
Предусмотрите set- и get -функции для каждого элемента данных.
Если зарплата не
положительна, устанавливайте ее равной 0. Напишите тестовую программу,
демонстрирующую возможности класса Employee. Создайте два объекта Employee и
выведите годовую зарплату для каждого объекта. Затем поднимите зарплату каждого
из «служащих» на 10% и снова выведите их годовую зарплату.


Запнулся и не знаю как реализовать выделенное жирным шрифтом

Вот что я сделал:

Employee.h - интерфейс

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Employee
{
public:
    string Name(string);
    string SurName(string);
    int zarplata();
 
    void setName(string);
    void setSurName(string);
    void setZarplata(string);
 
    string getName();
    string getSurName();
    string getZarplata();
};
Employee.cpp - файл реализации
C++
1
2
3
4
5
6
7
8
9
10
11
#include "stdafx.h"
#include <iostream>
#include "Employee.h"
 
using namespace std;
 
//следующие три строчки кода вообще лубуда какая то не правильная (
Employee::Name(string)
{
        
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2011, 21:19     Класс Employee, проблемы реализации
Посмотрите здесь:

C++ Создать класс Employee, содержащий следующие элементы:
Изменить класс Employee C++
Создайте класс с именем Employee, включающий в качестве элементов данных три информационных пункта: имя, фамилию и месячную зарплату C++
Класс, отделение интерфейса от реализации C++
C++ Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sick2
14 / 14 / 1
Регистрация: 26.11.2010
Сообщений: 235
26.10.2011, 11:33     Класс Employee, проблемы реализации #21
но у меня возникла проблема как поднять з/п на 10 %???
Умножить текущую на 1,1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nova555
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 14:18     Класс Employee, проблемы реализации #22
Цитата Сообщение от Sick2 Посмотреть сообщение
Умножить текущую на 1,1)
Нужно значение без плавающей точки.
fasked
26.10.2011, 14:20
  #23

Не по теме:

Цитата Сообщение от nova555 Посмотреть сообщение
Нужно значение без плавающей точки.
Так вот честные люди потом и не досчитываются своих зарплат

nova555
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 14:24     Класс Employee, проблемы реализации #24
Цитата Сообщение от Sick2 Посмотреть сообщение
Умножить текущую на 1,1)
Может я ни так задачу понял, видимо после того как протестировать класс Employee, нужно в самой программе подставить формулу расчета 10%?

Добавлено через 54 секунды
Цитата Сообщение от fasked Посмотреть сообщение

Не по теме:


Так вот честные люди потом и не досчитываются своих зарплат

))))Я еще не дошел до плавающих точек.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
26.10.2011, 14:25     Класс Employee, проблемы реализации #25
nova555, найдите 10 процентов от зарплаты и сложите с текущей. Десять процентов можно найти, если разделить текущую зарплату на 10
nova555
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 14:27     Класс Employee, проблемы реализации #26
Цитата Сообщение от fasked Посмотреть сообщение
nova555, найдите 10 процентов от зарплаты и сложите с текущей. Десять процентов можно найти, если разделить текущую зарплату на 10
Это понятно, но я не понимаю расчет этих 10% нужно сделать в программе или тупо к годовой в программе прибавить посчитанные на листочке 10%?
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
26.10.2011, 16:19     Класс Employee, проблемы реализации #27
C++
1
emp1.setZarplata( emp1.getZarplata() + ( emp1.getZarplata() / 100 ) * 10 )
ну или если только для 10% то
C++
1
emp1.setZarplata( emp1.getZarplata() + emp1.getZarplata() / 10 )
nova555
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 16:48     Класс Employee, проблемы реализации #28
Цитата Сообщение от Toshkarik Посмотреть сообщение
C++
1
emp1.setZarplata( emp1.getZarplata() + ( emp1.getZarplata() / 100 ) * 10 )
ну или если только для 10% то
C++
1
emp1.setZarplata( emp1.getZarplata() + emp1.getZarplata() / 10 )
Это нужно в main.cpp прописывать?
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
26.10.2011, 16:49     Класс Employee, проблемы реализации #29
Ну да :/
nova555
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 16:53     Класс Employee, проблемы реализации #30
Toshkarik,
Смотри вот мой код.
Код Employee.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//Employee.h ГґГ*éë ñîäåðæèò îïðåäåëåГ*ГЁГҐ ГЄГ«Г*Г±Г±Г* Employee ГЁ ГҐГЈГ® 
//ïðîòîòèïû ГґГіГ*êöèé.
#include <iostream>
#include <string>
using std::string;
 
//îïðåäåëåГ*ГЁГҐ ГЄГ«Г*Г±Г±Г*
class Employee
{
    public:
        Employee( string thisName , string thisSurname, int thisSalary);
        void setName( string );
        string getName();
        void setSurname( string );//ГґГ*ìèëèÿ
        string getSurname();
        void setSalary( int );// Г§Г*ðïëГ*ГІГ*
        int getSalary();
    private:
        string name;
        string surname;
        int salary;
    };
Код 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
//Employee.cpp Г”Г*éë ñîäåðæèò ýëåìåГ*ГІ ГґГіГ*êöèè ГЄГ«Г*Г±Г±Г* Employee.
#include <iostream>
#include "Employee.h"
 
using std::cout;
using std::endl;
 
Employee::Employee( string thisName, string thisSurname, int thisSalary )
{
    setName( thisName );
    setSurname( thisSurname );
    setSalary( thisSalary );
}
 
void Employee::setName( string thisName )
{
    name = thisName;
}
 
string Employee::getName()
{
    return name;
}
 
void Employee::setSurname( string thisSurname)
{
    surname = thisSurname;
}
 
string Employee::getSurname()
{
    return surname;
}
 
void Employee::setSalary( int thisSalary )
{
    
    if(thisSalary < 0 )
    cout << "Г‡Г*ðïëГ*ГІГ* Г*ГҐ ìîæåò áûòü îòðèöГ*òåëüГ*îé, Г§Г*ðïëГ*ГІГ* ГіГ±ГІГ*Г*îâëåГ*Г* Г*Г* 0" << endl;
    salary = 0;
    
    if(thisSalary > 0 )
    salary = thisSalary * 12;
}
 
int Employee::getSalary()
{
    return salary;
}
Код 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
#include <iostream>
 
using std::cout;
using std::endl;
 
#include "Employee.h"
 
 
int main()
{
    setlocale(LC_ALL, "rus");
    Employee emp1("Ñåðãåé","ГЊ", 32000);
    Employee emp2("Г…ГўГЈГҐГ*ГЁГї","ГЊ", 25000);
    
    
 
    cout << "Ãîäîâîé Г§Г*Г°Г*áîòîê ñîòðóäГ*ГЁГЄГ*" << " " << emp1.getName() << " " << emp1.getSurname() 
    << " " << emp1.getSalary() << endl;
    cout << "Ãîäîâîé Г§Г*Г°Г*áîòîê ñîòðóäГ*ГЁГЄГ*" << " " << emp2.getName() << " " << emp2.getSurname() 
    << " " << emp2.getSalary() << endl;  
    system("PAUSE");
    return 0;
}
Если вставлю то там суммы крупные получаются
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
26.10.2011, 17:10     Класс Employee, проблемы реализации #31
C++
1
emp1.setSalary( emp1.getSalary() + (( emp1.getSalary() / 100) * 10));
Должно получится 35400 в emp1 и 27500 в emp2. Не такие цифры разве?

Добавлено через 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
32
#include <iostream>
 
using std::cout;
using std::endl;
 
#include "Employee.h"
 
 
int main()
{
    setlocale(LC_ALL, "rus");
    Employee emp1("Сергей","М", 32000);
    Employee emp2("Евгения","М", 25000);
    
    
 
    cout << "Годовой заработок сотрудника" << " " << emp1.getName() << " " << emp1.getSurname() 
    << " " << emp1.getSalary() << endl;
    cout << "Годовой заработок сотрудника" << " " << emp2.getName() << " " << emp2.getSurname() 
    << " " << emp2.getSalary() << endl;
    
    emp1.setSalary( emp1.getSalary() + (( emp1.getSalary() / 100) * 10));
    emp2.setSalary( emp2.getSalary() + (( emp2.getSalary() / 100) * 10));
 
    cout << "Годовой заработок сотрудника" << " " << emp1.getName() << " " << emp1.getSurname() 
    << " " << emp1.getSalary() << endl;
    cout << "Годовой заработок сотрудника" << " " << emp2.getName() << " " << emp2.getSurname() 
    << " " << emp2.getSalary() << endl;
 
    system("PAUSE");
    return 0;
}
nova555
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
27.10.2011, 09:04     Класс Employee, проблемы реализации #32
Цитата Сообщение от Toshkarik Посмотреть сообщение
C++
1
emp1.setSalary( emp1.getSalary() + (( emp1.getSalary() / 100) * 10));
Должно получится 35400 в emp1 и 27500 в emp2. Не такие цифры разве?

Добавлено через 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
32
#include <iostream>
 
using std::cout;
using std::endl;
 
#include "Employee.h"
 
 
int main()
{
    setlocale(LC_ALL, "rus");
    Employee emp1("Сергей","М", 32000);
    Employee emp2("Евгения","М", 25000);
    
    
 
    cout << "Годовой заработок сотрудника" << " " << emp1.getName() << " " << emp1.getSurname() 
    << " " << emp1.getSalary() << endl;
    cout << "Годовой заработок сотрудника" << " " << emp2.getName() << " " << emp2.getSurname() 
    << " " << emp2.getSalary() << endl;
    
    emp1.setSalary( emp1.getSalary() + (( emp1.getSalary() / 100) * 10));
    emp2.setSalary( emp2.getSalary() + (( emp2.getSalary() / 100) * 10));
 
    cout << "Годовой заработок сотрудника" << " " << emp1.getName() << " " << emp1.getSurname() 
    << " " << emp1.getSalary() << endl;
    cout << "Годовой заработок сотрудника" << " " << emp2.getName() << " " << emp2.getSurname() 
    << " " << emp2.getSalary() << endl;
 
    system("PAUSE");
    return 0;
}
В таком варианте выводит слишком огромные цифры.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.10.2011, 18:18     Класс Employee, проблемы реализации #33
В задании сказано, что нужно прибавить 10% к существующей зарплате. Проверил у себя, все работает отлично, при начальной зарплате 100, после прибавления получается 110.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2013, 19:39     Класс Employee, проблемы реализации
Еще ссылки по теме:

C++ Класс редактирования данных. Нужны советы по реализации
C++ Класс Employee
Создать класс для реализации динамического массива C++

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

Или воспользуйтесь поиском по форуму:
Gibsonius
 Аватар для Gibsonius
4 / 4 / 0
Регистрация: 26.09.2012
Сообщений: 27
02.07.2013, 19:39     Класс Employee, проблемы реализации #34
Может пригодится кому-нибудь

Кликните здесь для просмотра всего текста
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
// заголовочный файл Employee.h
#include <iostream>
#include <string>
 
using std::cout;
using std::endl;
using std::string;
 
class Employee
{
private:
    string name; // элемент данных типа string ( имя служащего) 
    string sername; // элемент данных типа string ( фамилия служащего)
    int zarplata; // // элемент данных типа int ( фамилия зарплата)
 
public:
    Employee( string, string, int ); // конструктор инициализирующий три элемента данных
    void setName( string );
    void setSername( string );
    void setZarplata( int );
    string getName();
    string getSername();
    int getZarplata();
    int getGodovayZarplata();
    int getProcent();
};
 
 
// файл с исходным кодом Employee.cpp
#include <iostream>
#include <string>
#include "Employee.h"
 
using std::cout;
using std::endl;
using std::string;
 
Employee::Employee( string names, string sernames, int plata )
{
    setName( names );
    setSername( sernames );
    setZarplata( plata );
}
 
void Employee::setName( string names )
{
    name = names;
}
 
void Employee::setSername( string sernames )
{
    sername = sernames;
}
 
void Employee::setZarplata( int plata )
{
    zarplata = plata;
}
 
string Employee::getName()
{
    return name;
}
 
string Employee::getSername()
{
    return sername;
}
 
int Employee::getZarplata()
{
    if ( zarplata < 0)
        zarplata = 0;
 
    return zarplata;
}
 
int Employee::getGodovayZarplata()
{
    int summ;
    summ = zarplata * 12;
    return summ;
}
 
int Employee::getProcent()
{
    zarplata = (( zarplata / 100 ) * 10) + zarplata;
    return zarplata;
}
 
// файл main.cpp
#include <iostream>
#include <string>
#include <conio.h>
#include "Employee.h"
 
using std::cout;
using std::endl;
using std::string;
 
int main ()
{
    setlocale ( LC_ALL, "Russian" );
 
    Employee employee1 ( "Антон", "Шляпкин", 15000 );
    Employee employee2 ( "Федот", "Тапкин", 17000 );
 
    cout << "Имя служащего: " << employee1.getName() << endl;
    cout << "Фамилия служащего: " << employee1.getSername() << endl;
    cout << "Зарплата (в месяц): " << employee1.getZarplata() << endl;
    cout << "Зарплата (за год): " << employee1.getGodovayZarplata()<< endl;
    cout << "Повышение зарплаты (на 10%): " << employee1.getProcent() << endl;
    cout << "Зарплата (за год): " << employee1.getGodovayZarplata() << "\n\n" << endl;
 
    cout << "Имя служащего: " << employee2.getName() << endl;
    cout << "Фамилия служащего: " << employee2.getSername() << endl;
    cout << "Зарплата (в месяц): " << employee2.getZarplata() << endl;
    cout << "Зарплата (за год): " << employee2.getGodovayZarplata()<< endl;
    cout << "Повышение зарплаты (на 10%): " << employee2.getProcent() << endl;
    cout << "Зарплата (за год): " << employee2.getGodovayZarplata() << "\n\n" << endl;
     
 
    getch();
    return 0;
}
Yandex
Объявления
02.07.2013, 19:39     Класс Employee, проблемы реализации
Ответ Создать тему
Опции темы

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