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

Класс, для полей которого нужно использовать класс - C++

Восстановить пароль Регистрация
 
A0A
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
22.12.2013, 20:17     Класс, для полей которого нужно использовать класс #1
Создайте класс Payment, используя для представления полей начислениq и удержаниq класс Money.
...
Класс Money используется для работы с денежными суммами. Число представляется двумя полями: типа long для рублей и unsigned char для копеек. Дробная часть (копейки) при выводе на экран должна быть отеделена от целой части запятой. Реализуйте операции сложения, вычитания, деления сумм, суммы на дробное число, умножение на дробное число и операции сравнения.
Нужно помочь с этой частью, ну и проблемка - char для ФИО не переваривает пробелы.

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
#include "stdafx.h"
#include <conio.h>
#include <iostream>
using namespace std;
 
class payment
{
 
 public:    char fio[30]; //Фио
    float oklad; //оклад
    int year; //год поступления на работу
    float procent; //процент надбавки
    float nalog; //подоходный налог
    int rab_day_month; //кол-во отработанных дней
    float day_month; //кол-во рабочих дней
    float nach_summ; //начисленная сумма
    float yder_summ; //удержанная сумма
    float stag; //стаж (полное кол-во лет)
    float zp; //зарплата
 
    float vichisl_nach_summ();
    float vichisl_yder_summ();
    float vichisl_zp();float vichisl_stag();
 
};
class Money{
public:
long roubles;
unsigned char kop;}
float payment::vichisl_nach_summ(){return (oklad*rab_day_month+oklad*rab_day_month*procent/100);}
float payment::vichisl_yder_summ(){return ((oklad*rab_day_month+oklad*rab_day_month*procent/100)*0.01+(oklad*rab_day_month+oklad*rab_day_month*procent/100)*0.13);}
float payment::vichisl_zp(){return ((oklad*rab_day_month+oklad*rab_day_month*procent/100)-((oklad*rab_day_month+oklad*rab_day_month*procent/100)*0.01+(oklad*rab_day_month+oklad*rab_day_month*procent/100)*0.13));}
float payment::vichisl_stag(){return (2013-year);}
 
void main(){
 payment* f=new payment();
 setlocale (LC_ALL, "russian");
cout<<"Введите фамилию, имя и отчество сотрудника - ";
cin>>f->fio;
cout<<"Введите оклад сотрудника  - \n";
cin>>f->oklad;
cout<<"Введите год поступления сотрудника на работу - \n";
cin>>f->year;
cout<<"Введите процент надбавки - \n";
cin>>f->procent;
cout <<"Введите кол-во отработанных дней - \n";
cin>>f->rab_day_month;
cout<<"Начисленная сумма составляет: "<<f->vichisl_nach_summ()
<<"\n";
cout<<"Удержанная сумма составляет: "<<f->vichisl_yder_summ()<<"\n";
cout<<"Итоговая сумма выплаты "<<f->vichisl_zp()<<"\n";
cout<<"Стаж : "<<f->vichisl_stag()<<"\n";
delete f;
getch();}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.12.2013, 20:17     Класс, для полей которого нужно использовать класс
Посмотрите здесь:

Реализуйте класс для хранения ФИО и номера телефона человека, класс для хранения даты рождения человека, а также класс для хранения ФИО и почтового ад C++
Создать класс, содержащий поля, которые можно использовать для хранения данных C++
C++ Создать класс, описание которого представлено в вариантах для работы
C++ С++ класс (создайте класс с именем Complex для выполнения в арифмитических операий с комплексными числами))
Реализовать класс Triangle (задание 25), опираясь на класс Angle из задания 26 для представления углов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
xoror
 Аватар для xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
22.12.2013, 21:40     Класс, для полей которого нужно использовать класс #2
Цитата Сообщение от A0A Посмотреть сообщение
char для ФИО не переваривает пробелы.
Цитата Сообщение от "A0A;5540477"[CPP
]cout<<"Введите фамилию, имя и отчество сотрудника - ";
cin>>f->fio;[/CPP]
Это "cin >>" не переваривает пробелы. Но с помощью функции getline() мы это исправим))

C++
1
2
cout<<"Введите фамилию, имя и отчество сотрудника - ";
cin.getline(f->fio, 30);
A0A
0 / 0 / 0
Регистрация: 13.10.2013
Сообщений: 36
23.12.2013, 21:42  [ТС]     Класс, для полей которого нужно использовать класс #3
А что с классом Money?

Добавлено через 11 часов 16 минут
Может кто-нибудь помочь?

Добавлено через 4 часа 13 минут
???
xoror
 Аватар для xoror
29 / 31 / 2
Регистрация: 15.12.2013
Сообщений: 147
24.12.2013, 08:09     Класс, для полей которого нужно использовать класс #4
Вот две операции сравнения для класса Money.Сравнение рублей и копеек двух объектов
C++
1
2
3
4
5
6
class Money
{
public:
    bool operator==(const Money &r) { return roubles==r.roubles && kop==r.kop; }
    bool operator!=(const Money &r) { return !(*this==r); }
}
Yandex
Объявления
24.12.2013, 08:09     Класс, для полей которого нужно использовать класс
Ответ Создать тему
Опции темы

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