Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабы / 01

.cpp
Скачиваний:
24
Добавлен:
30.04.2013
Размер:
1.76 Кб
Скачать
#include <stdio.h>
#include <conio.h>

class Fraction
{
public:
// Constructors
	Fraction();
	Fraction(float numerator, float denominator);
	Fraction(Fraction &src);

// Methods
	float GetNumerator() {return m_fNumerator;};
	float GetDenominator() {return m_fDenominator;};

// Operations
	void Set(float numerator, float denominator);
	void CopyFrom(Fraction &src);

// Operators
	inline int operator==(const Fraction& a) const { return m_fNumerator==a.m_fNumerator && m_fDenominator==a.m_fDenominator; }

	friend void Input(Fraction &a);
	friend void Output(Fraction &a);

private:
	float m_fNumerator;
	float m_fDenominator;
};


Fraction::Fraction()
{
	Set(1.0, 1.0);
}

Fraction::Fraction(float numerator, float denominator)
{
	Set(numerator, denominator);
}

Fraction::Fraction(Fraction &src)
{
	CopyFrom(src);
}

void Fraction::Set(float numerator, float denominator)
{
	m_fNumerator = numerator;
	if (denominator == 0)
	{
		printf("ERROR! Division by zero!\n");
		denominator = 1;
	}
	m_fDenominator = denominator;
}

void Fraction::CopyFrom(Fraction &src)
{
	Set(src.m_fNumerator, src.m_fDenominator);
}

void Input(Fraction &a)
{
	float n = 0, d = 0;
	scanf("%f/%f", &n, &d);
	a.Set(n, d);// for error checking
}

void Output(Fraction &a)
{
	printf("Fraction: %f/%f\n", a.m_fNumerator, a.m_fDenominator);
}

void main(void)
{
	Fraction f1 = Fraction();
	Fraction f2(2, 10);
	Fraction f3(f2);

	Output(f1);
	Output(f2);
	Output(f3);

	printf("Enter new valuse for fraction 3: ");
	Input(f3);
	Output(f3);

	if (f3 == f1)
		printf("Fraction 3 is equal to fraction 1!\n");
	else if (f3 == f2)
		printf("Fraction 3 is equal to fraction 2!\n");

	getch();
}
Соседние файлы в папке Лабы