Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, реализовать класс / 4 сообщений из 4, страница 1 из 1
01.11.2006, 22:07
    #34099134
Valka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, реализовать класс
Милые, добрые люди, помогите пожалуйста бедной девушке решить такую задачу!
Определите класс дробей - рациональных чисел, являющихся отношением двух целых чисел. Напишите методы для сложения, вычитания, умножения и деления дробей. Как вы приводите дробь к наименьшему знаменателю.Алгоритм Эвклида. Класс реализован на языке C++
...
Рейтинг: 0 / 0
01.11.2006, 23:28
    #34099212
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, реализовать класс
Вам сюда
...
Рейтинг: 0 / 0
02.11.2006, 09:51
    #34099656
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, реализовать класс
В чем возникли трудности?
...
Рейтинг: 0 / 0
08.11.2006, 10:19
    #34111099
VladimirP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите, пожалуйста, реализовать класс
Да. Зачет надо сдавать!
Зачем приводить к общему знаменателю? Делаешь сложение или вычитание, а потом выполняешь сокращение. Примерную реализацию нарисовал. Недостающее допишешь сама.

mathematics.h

//---------------------------------------------------------------------------

#ifndef mathematicsH
#define mathematicsH
//---------------------------------------------------------------------------
int max(int x, int y);
int min( int x, int y) ;

class fraction
{
public:
int numerator; //числитель
int denominator; //знаменатель
public:
fraction( int iWhole, int iNumerator, int iDenominator);
fraction( int iNumerator, int iDenominator);
fraction( int iNumerator);
fraction( );
fraction( const fraction& ss);
~fraction( ){};

fraction operator +( fraction& rhs);
fraction operator -( fraction& rhs);
void operator +=( fraction& rhs);
void operator *=( fraction& rhs);
void operator *=( int *i);

void cancellation();//сокращает дробь. можно перенести в private

};
#endif

mathematics.cpp

//---------------------------------------------------------------------------


#pragma hdrstop

#include <math.h>

#include "mathematics.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

int max(int x, int y)
{
return (x > y) ? x : y;
}
int min( int x, int y)
{
return (x < y) ? x : y;
}

fraction::fraction( int iWhole, int iNumerator, int iDenominator)
{
numerator = iNumerator + iWhole * iDenominator;
denominator = iDenominator;
}

fraction::fraction( int iNumerator, int iDenominator)
{
numerator = iNumerator;
denominator = iDenominator;
}

fraction::fraction( int iNumerator)
{
numerator = iNumerator;
denominator = 1;
}

fraction::fraction( )
{
numerator = 1;
denominator = 1;
}
fraction::fraction( const fraction&ss)
{
numerator = ss.numerator;
denominator = ss.denominator;
}


fraction fraction::operator +( fraction& rhs)
{
fraction dd;
dd.numerator = numerator * rhs.denominator +
denominator * rhs.numerator;
dd.denominator = denominator * rhs.denominator;
return dd;
}
fraction fraction::operator -( fraction& rhs)
{
fraction dd;
dd.numerator = numerator * rhs.denominator -
denominator * rhs.numerator;
dd.denominator = denominator * rhs.denominator;
return dd;
}
void fraction::operator +=( fraction& rhs)
{
numerator = numerator * rhs.denominator +
denominator * rhs.numerator;
denominator = denominator * rhs.denominator;
return ;
}
void fraction::operator *=( fraction& rhs)
{
numerator *= rhs.numerator;
denominator *= rhs.denominator;
return ;
}
void fraction::operator *=( int *i)
{
numerator *= *i;
denominator *= *(i+1);
return ;
}


void fraction::cancellation( )
{
int N;
bool bReturn;
do
{
N = min( abs( numerator), abs( denominator));
int num = numerator;
int den = denominator;
bReturn = false;
for( int i = N; i>1; i--)
{
num = (numerator / i) * i;
den = (denominator / i) * i;
if( ( (numerator / i) * i == numerator) &&
( (denominator / i) * i == denominator))
{
numerator /= i;
denominator /= i;
bReturn = true;
break;
}
}
} while( bReturn);

return ;
}

//примеры вызова



//---------------------------------------------------------------------------
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
fraction aa (12,18);
fraction ae (3,2,3);
fraction *ab = new fraction(5,6);
fraction cc = aa + ae;
int ar[2] = {2,3};
cc *= ar;
aa.cancellation();
fraction dd(aa);
fraction ww = *ab;
}
//---------------------------------------------------------------------------
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, реализовать класс / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]