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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 09:21   #1
RodionL3
 
Регистрация: 21.04.2010
Сообщений: 7
Вопрос класс «дробное число»(С++)

Определить класс «дробное число» с компонентными данными: целая часть, числитель, знаменатель (проверить, не равен ли знаменатель нулю). Предусмотреть компонентные функции: получения каждого элемента дан-ных по отдельности, форматного вывода дроби на экран, если целая часть равна нулю, то не выводить ее), приведения дроби к несократимому виду. Описать дружественную функцию преобразования дроби в десятичный фор-мат и ее вывода на экран
RodionL3 вне форума Ответить с цитированием
Старый 22.04.2010, 10:42   #2
RUSt88
Участник клуба
 
Регистрация: 29.12.2009
Сообщений: 1,166
По умолчанию

могу выполнить за вознаграждение, есть готовый класс на C#, перепишу в кратчайший срок
прогер C\C++\C#\Delphi
ася: [семь 3]-[97]-[1 шесть]
RUSt88 вне форума Ответить с цитированием
Старый 22.04.2010, 21:30   #3
4айник
 
Регистрация: 17.03.2010
Сообщений: 5
По умолчанию

// peregruzka.cpp : Defines the entry point for the console application.
//
#include"stdafx.h"

#include<iostream>

using std::cout;
using std::cin;




class rationalNumber{
friend rationalNumber operator+ (rationalNumber&,rationalNumber&);
friend rationalNumber operator- (rationalNumber&,rationalNumber&);
friend rationalNumber operator* (rationalNumber&,rationalNumber&);
friend rationalNumber operator/ (rationalNumber&,rationalNumber&);
friend int operator== (rationalNumber&,rationalNumber&);
friend int operator!= (rationalNumber&,rationalNumber&);
friend int operator< (rationalNumber&,rationalNumber&);
friend int operator> (rationalNumber&,rationalNumber&);
public:
rationalNumber(int = 1, int = 1 );
void setdr(int ,int);
void sokr();
void print();

private:
int ch;
int zn;
};
rationalNumber::rationalNumber(int x, int y )
{
setdr(x,y);
sokr();
}

void rationalNumber::setdr(int a,int b)
{
if(b>0) zn=b;
else
{
cout<<"Znachenie znamenatelya "<< b <<" bylo vvedeno nekorrektno.Znamenatel ustanovlen edinicey.\n";
zn=1;
}
ch=a;
}
void rationalNumber::sokr()
{
int del,i,min,osta,ostb,fl=0;
if(ch<0) {fl++;ch=-ch;}
if(ch<zn) min=ch;
else min=zn;
del=1;
for(i=2;i<=min;i++)
{
osta=ch%i;
ostb=zn%i;
if((osta==0)&&(ostb==0)) del=i;
}
ch=ch/del;
zn=zn/del;
if(fl!=0) ch=-ch;
}
void rationalNumber:rint()
{
if((ch==zn)||(ch==0)||(zn==1)) cout<<ch;
else cout<<ch<<"/"<<zn;
}
rationalNumber operator*(rationalNumber& a, rationalNumber& b)
{
rationalNumber c;
c.ch=a.ch*b.ch;
c.zn=a.zn*b.zn;
c.sokr();
return c;
}
rationalNumber operator/(rationalNumber& a, rationalNumber& b)
{
rationalNumber c;
c.ch=a.ch*b.zn;
c.zn=a.zn*b.ch;
c.sokr();
return c;
}
rationalNumber operator+(rationalNumber& a, rationalNumber& b)
{
rationalNumber c;
c.ch=a.ch*b.zn+b.ch*a.zn;
c.zn=a.zn*b.zn;
c.sokr();
return c;
}
rationalNumber operator-(rationalNumber& a, rationalNumber& b)
{
rationalNumber c;
c.ch=a.ch*b.zn-b.ch*a.zn;
c.zn=a.zn*b.zn;
c.sokr();
return c;
}
int operator==(rationalNumber& a, rationalNumber& b)
{
if((a.ch==b.ch)&&(a.zn==b.zn)) return 0;
else return -1;
}
int operator!=(rationalNumber& a, rationalNumber& b)
{
if((a.ch!=b.ch)||(a.zn!=b.zn)) return 0;
else return -1;
}
int operator<(rationalNumber& a, rationalNumber& b)
{
float a1,b2,x,y;
x=float(a.ch);
y=float(a.zn);
a1=(x/y);
x=float(b.ch);
y=float(b.zn);
b2=(x/y);
if(a1<b2) return 0;
else return -1;
}
int operator>(rationalNumber& a, rationalNumber& b)
{
float a1,b2,x,y;
x=float(a.ch);
y=float(a.zn);
a1=(x/y);
x=float(b.ch);
y=float(b.zn);
b2=(x/y);
if(a1>b2) return 0;
else return -1;
}


int _tmain(int argc, _TCHAR* argv[])
{
int x,y,var;
cout<<"vvedite znachenie 1-oy drobi:\nchislitel=";
cin>>x;
cout<<"znamenatel=";
cin>>y;
rationalNumber a(x,y),c;
cout<<"vvedite znachenie 2-oy drobi:\nchislitel=";
cin>>x;
cout<<"znamenatel=";
cin>>y;
rationalNumber b(x,y);

cout<<"pervaya drob:";
a.print();
cout<<"\nvtoraya drob:";
b.print();
c=a+b;
cout<<"\nSumma:";
c.print();
c=a-b;
cout<<"\nraznost:";
c.print();
c=a*b;
cout<<"\nproizvedenie:";
c.print();
c=a/b;
cout<<"\ndelenie:";
c.print();
if((var=(a==b))==0) cout<<"\na ravno b\n";
else
{
if((var=(a!=b))==0) cout<<"\na ne ravno b";
if((var=(a<b))==0) cout<<"\na menshe b\n";
if((var=(a>b))==0) cout<<"\na bolshe b\n";
}
return 0;
}

это код на задачу:
3.1) Создайте класс rationalNumber (дроби) со следующими возможностями:
а) Создайте конструктор, который предотвращает равенство нулю
знаменателя дроби, сокращает или упрощает дроби, если они не
в сокращенной форме, и исключает отрицательные знаменатели.
б) Перегрузите операции сложения, вычитания, умножения и
деления для этого класса.
в) Перегрузите операции отношения и проверки на равенство для
этого класса.

вынеси,что не требуется и кое-что добавь
4айник вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
класс «дробное число» RodionL3 Общие вопросы C/C++ 5 24.04.2010 12:44
Дробное отрицательное в двоичный вид ajaxtpm Общие вопросы Delphi 0 13.04.2010 21:49
Записать дробное число в форматах Single и Double, а целое в формате Integer!!!! AlexSed Помощь студентам 4 08.01.2010 23:39
Как записывается дробное число. Altera Свободное общение 2 18.12.2009 20:30
Ввести число N и определить делится ли оно без остатка на число M (VBA) Ivanich Microsoft Office Excel 7 24.04.2008 19:43