Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2021, 19:52   #1
Umilowana
Новичок
Джуниор
 
Регистрация: 11.05.2021
Сообщений: 1
По умолчанию Класс Money для работы с денежными суммами

Класс Money для работы с денежными суммами. Сумма должна быть представлена двумя полями типа *long для рублей и *byte - для копеек.
Реализовать класс согласно заданию.
В классе обязательно должны присутствовать:
1. Конструкторы, соответствующие способам задания объекта.
2. Конструктор копирования.
3. Деструктор.
4. Перегруженные арифметические операции (в виде методов класса).
5. Перегруженные операции сравнения (в виде методов).
6. Перетруженный оператор присваивания.
7 Перегруженные операции « и ».
У меня возникла проблема, как мне правильно переделать свой код, чтобы поля типа были представлены указателями. И с перегрузкой арифметических операций в виде методов класса

Код:
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>

using namespace std;


class MONEY
{
public:
	long rub;
	long kop;

	MONEY() : // конструктор без параметров (по умолчанию)
		rub(0),
		kop(0) {}

	MONEY(long RUB, long KOP) : // конструктор с параметрами (НЕ по умолчанию)
		rub(RUB),
		kop(KOP) {}

	MONEY(const MONEY& money) // конструктор копирования
	{
		rub = money.rub;
		kop = money.kop;
	}

	~MONEY() {} // деструктор

	// перегрузка операций:
	friend ostream& operator<< (ostream& out, const MONEY& money);
	friend istream& operator>> (istream& in, MONEY& money);
	MONEY operator+(MONEY& ob1, MONEY& ob2);
	MONEY operator-(MONEY& ob1, MONEY& ob2);

	friend bool operator==(MONEY& ob1, MONEY& ob2);
	friend bool operator<(MONEY& ob1, MONEY& ob2);
	friend bool operator>(MONEY& ob1, MONEY& ob2);

};


istream& operator>> (istream& in, MONEY& money)
{
	
	cout << endl << "ВВЕДИТЕ КОЛИЧЕСТВО РУБЛЕЙ: ";
	in >> money.rub;
	cout << endl << "ВВЕДИТЕ КОЛИЧЕСТВО КОПЕЕК: ";
	in >> money.kop;
	
	return in;
}



ostream& operator<< (ostream& out, const MONEY& money)
{

	out << endl << " === === ВАШ БАЛАНС: " << money.rub << " руб " << money.kop << " коп. === ===" << endl;

	return out;
}

// СЛОЖЕНИЕ
MONEY operator+(MONEY& ob1, MONEY& ob2)
{
	int sum1= 0,sum2=0,sum3=0;


	sum1 = ((ob1.rub * 100) + ob1.kop);//переводим рубли в копейки 
	sum2= ((ob2.rub * 100) + ob2.kop);//переводим рубли в копейки 
	sum3= sum1+sum2;
	ob1.rub = sum3 / 100;//ищем целую часть от числа - т.е. рубли
	ob1.kop = sum3 % 100;//ищем сколько копеек   
	MONEY ob(ob1.rub, ob1.kop);

	return ob;
}


// ВЫЧИТАНИЕ
MONEY operator-(MONEY& ob1, MONEY& ob2)
{
	int sum1 = 0, sum2 = 0, sum3 = 0;
	
	sum1 = ((ob1.rub * 100) + ob1.kop);//переводим рубли в копейки 
	sum2 = ((ob2.rub * 100) + ob2.kop);//переводим рубли в копейки 
	sum3 = sum1-sum2;
	ob1.rub = sum3 / 100;//ищем целую часть от числа - т.е. рубли
	ob1.kop = sum3 % 100;//ищем сколько копеек   
	MONEY ob(ob1.rub, ob1.kop);
	return ob;
}


// СРАВНЕНИЕ
bool operator==(MONEY& ob1, MONEY& ob2)
{
	return ((ob1.rub == ob2.rub) && (ob1.kop == ob2.kop));
}

// БОЛЬШЕ
bool operator>(MONEY& ob1, MONEY& ob2)
{
	if (ob1.rub == ob2.rub) return (ob1.kop > ob2.kop);
	else return (ob1.rub > ob2.rub);
}

// МЕНЬШЕ
bool operator<(MONEY& ob1, MONEY& ob2)
{
	if (ob1.rub == ob2.rub) return (ob1.kop < ob2.kop);
	else return (ob1.rub < ob2.rub);
}


int main()
{
	setlocale(0, "Russian");

	MONEY ob_1(14, 22);  
	cout<<ob_1;
	MONEY ob_2(16, 22);  
	cout<<ob_2;

	MONEY ob_3 = ob_1 + ob_2;   
	cout<<ob_3;

	if (ob_2 == ob_1)    cout << endl << " ob_2 == ob_1 " << endl;
	else
	{
		if (ob_2 > ob_1) cout << endl << " ob_2 > ob_1 " << endl;
		else             cout << endl << " ob_2 < ob_1 " << endl;
	}

	ob_1 = ob_2 + 4; 
	cout<<ob_1;

	MONEY ob_4;  
	cin>>ob_4;  
	cout<<ob_4;

	MONEY ob_5 = ob_4;   
	cout<<ob_5;
	MONEY ob_6(14, 22);
	MONEY ob_7 = ob_4 - ob_6 ;
	cout<<ob_7;

	_getch();
	return 0;
}

Последний раз редактировалось Umilowana; 20.05.2021 в 20:14.
Umilowana вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создать класс для работы с массивом и перегрузить для него операторы. Ivan1826 Общие вопросы C/C++ 0 20.03.2021 00:39
Разработайте класс MONEY felicita_091 Visual C++ 1 29.03.2013 17:23
Класс для работы с массивом.С++ bender91 Помощь студентам 2 14.04.2012 21:32
Создать класс Money, разработав для него поля, конструктор, методы, свойства vip.a.o.93 Общие вопросы .NET 0 09.02.2012 21:42
класс для работы с деревьями CodeNOT C++ Builder 1 19.05.2011 22:23