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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.68
TBIKC
web dev
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
#1

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

20.08.2011, 21:19. Просмотров 2968. Ответов 33
Метки нет (Все метки)

Задание:
Создайте класс с именем 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 - C++
Выдает ошибку, не могу понять в чем дело. Писал код в qt employee.h #ifndef EMPLOYEE_H #define EMPLOYEE_H #include &lt;string&gt; ...

Создать класс employee - C++
Создайте класс employee, который содержит имя (объект класса string) и но- мер (типа long) служащего. Включите в него метод getdata(),...

Изменить класс Employee - C++
Всем доброго время суток. Второй день бьюсь. нужно создать класс Employee так чтобы можно было инициализировать данные-члены itsAge,...

Создать абстрактный базовый класс Employee - C++
МОЖНО ПОЖАЛУЙСТА ПОДРОБНО,Я ХОЧУ РАЗОБРАТЬСЯ 1. Создать абстрактный базовый класс Employee (служащий) с чисто виртуальной ...

Создать класс Employee, содержащий следующие элементы: - C++
Создать класс Employee, содержащий следующие элементы: - поле «ФИО» char* FIO; - поле «Табельный номер» int Number; - поле...

Создайте класс employee. Как написать программу? - C++
Создайте класс employee. Класс должен включать поле (массив) типа char для хранения фамилии сотрудника, 2 поля типа string для хранения...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
21.08.2011, 13:46 #16
fasked, я не передавал по ссылке потому что в этой главе еще не было их Они изучаются дальше.
4e87
4 / 4 / 1
Регистрация: 20.08.2011
Сообщений: 51
21.08.2011, 14:42 #17
C++
1
2
3
4
5
6
Employee::Employee(string name,string surName,int zarplata)
{
                setName(name);
                setSurName(surName);
                setZarplata(zarplata);
}
Также можно инициализировать по умолчанию:
C++
1
Employee(string = " ",string = " ",int = 0)
В мэйне инциализировать при таком подходе можно так:

C++
1
Employee person("вася","Пупкин","10000");
пс недавно начал изучать язык, могу ошибаться, мб кто-нибудь поправит
fasked
Эксперт С++
4934 / 2514 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
21.08.2011, 14:43 #18
4e87, я не думаю, что логичным решением было бы позволять создавать безымянных работников.
TBIKC
web dev
104 / 91 / 1
Регистрация: 23.09.2010
Сообщений: 738
21.08.2011, 15:10  [ТС] #19
Ошибка в Последних 2х строчках кода
Ничего понять не могу я создал объект P1 класса 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
#include "stdafx.h"
#include <iostream>
#include "Employee.h"
 
using namespace std;
 
Employee::Employee(string Name,string SurName, int Salary)
{
        setName(Name);
        setSurName(SurName);
        setSalary(Salary);
}
void Employee::setName(string thisName)
{
    Name = thisName;
}
void Employee::setSurName(string thisSurName)
{
    Name = thisSurName;
}
void Employee::setSalary(int thisSalary)
{
    if(Salary < 0 )
    {
        cout << "Зарплата не может быть отрицательной!" << endl;
        Salary = 0;
    }
    else
        Salary = thisSalary;
}
 
string Employee::getName()const
{
    return Name;
}
string Employee::getSurName()const
{
    return SurName;
}
int Employee::getSalary()const
{
    return Salary;
}
 
 
    Employee P1;
    P1.setName("Anton");
Добавлено через 5 минут
Посмотрел на конструктор и решил сделать так
C++
1
2
Employee P1("Anton","Cherepanov",10000);
P1.getSurname();
Но ошибка всё таже !

Добавлено через 16 минут
Сделал
C++
1
2
3
4
5
    
        Employee P1("Anton","Cherepanov",10000);
    P1.setName("Roma");
    
    cout << "Зарплата равна " << P1.getName() << endl;
Подчёркивает проблему в << попробовал P1.getSalary() всё нормально
nova555
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 10:41 #20
По этой задачки я сделал так
Код Employee 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
#include <iostream>
 
using std::cout;
using std::endl;
 
#include "Employee.h"
 
 
int main()
{
    setlocale(LC_ALL, "rus");
    Employee emp1("Sergey","M", 32000);
    Employee emp2("Evgeniya","M", 25000);
    
    
    cout << "Ãîäîâîé Г§Г*Г°Г*áîòîê ñîòðóäГ*ГЁГЄГ*" << " " << emp1.getName() << " " << emp1.getSurname() 
    << " " << emp1.getSalary() << endl;
    cout << "Ãîäîâîé Г§Г*Г°Г*áîòîê ñîòðóäГ*ГЁГЄГ*" << " " << emp2.getName() << " " << emp2.getSurname() 
    << " " << emp2.getSalary() << endl;  
    system("PAUSE");
    return 0;
}
Программа работает,
но у меня возникла проблема как поднять з/п на 10 %???
Sick2
14 / 14 / 1
Регистрация: 26.11.2010
Сообщений: 235
26.10.2011, 11:33 #21
но у меня возникла проблема как поднять з/п на 10 %???
Умножить текущую на 1,1)
nova555
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 14:18 #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 #24
Цитата Сообщение от Sick2 Посмотреть сообщение
Умножить текущую на 1,1)
Может я ни так задачу понял, видимо после того как протестировать класс Employee, нужно в самой программе подставить формулу расчета 10%?

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

Не по теме:


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

))))Я еще не дошел до плавающих точек.
fasked
Эксперт С++
4934 / 2514 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
26.10.2011, 14:25 #25
nova555, найдите 10 процентов от зарплаты и сложите с текущей. Десять процентов можно найти, если разделить текущую зарплату на 10
nova555
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 14:27 #26
Цитата Сообщение от fasked Посмотреть сообщение
nova555, найдите 10 процентов от зарплаты и сложите с текущей. Десять процентов можно найти, если разделить текущую зарплату на 10
Это понятно, но я не понимаю расчет этих 10% нужно сделать в программе или тупо к годовой в программе прибавить посчитанные на листочке 10%?
Toshkarik
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
26.10.2011, 16:19 #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 #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
1140 / 857 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
26.10.2011, 16:49 #29
Ну да :/
nova555
0 / 0 / 0
Регистрация: 29.07.2011
Сообщений: 17
26.10.2011, 16:53 #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;
}
Если вставлю то там суммы крупные получаются
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.10.2011, 16:53
Привет! Вот еще темы с ответами:

Создать класс EMPLOYEE, производный от класса PERSON и использовать их для вычисления зарплаты сотрудника - C++
Базовый класс: ЧЕЛОВЕК (PERSON) Имя (name) – string Возраст (age) – int Создать производный класс EMPLOYEE, имеющий поля: ...

Создайте класс employee, который содержит имя (объект класса string) и номер (типа long) служащего - C++
Создайте класс employee, который содержит имя (объект класса string) и но- мер (типа long) служащего. Включите в него метод getdata(),...

Создайте класс с именем Employee, включающий в качестве элементов данных три информационных пункта: имя, фамилию и месячную зарплату - C++
Дело обстоит так: Прочитав и, как я думал, поняв 3ю главу книги &quot;Как программировать на с++&quot; Дейтелов пришло время задачек. Немного...

Реализовать класс "Employee" - C++
{ссылка вырезана} Напишите пожалуйста код с объяснениями желательно


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.10.2011, 16:53
Ответ Создать тему
Опции темы

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