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

Перегрузка операции + - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Мартица http://www.cyberforum.ru/cpp-beginners/thread566999.html
В данной действительной квадратной матрице порядка n найти сумму элементов строки, в которой расположен элемент с наименьшим значением. Предполагается, что такой элемент единственный.
C++ Заменить в строке все целые числа соответствующим повторением следующего за ними символа (например, «abc5xacbl5y» - «abcxxxxxacbyyyyyyyyyyyyyyy»). Заменить в строке все целые числа соответствующим повторением следующего за ними символа (например, «abc5xacbl5y» - «abcxxxxxacbyyyyyyyyyyyyyyy»). http://www.cyberforum.ru/cpp-beginners/thread566968.html
ошибка в прорамме. выдаёт отрицательный ответ C++
Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известное количество N членов ряда Функция Условие Началььные данные n 10 х=2,1 Е=sqrt(k*x)*cos(k*x) k=1 #include<iostream.h>
C++ Дана действительная квадратная матрица порядка n, все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диаг
Дана действительная квадратная матрица порядка n, все элементы которой различны. Найти наибольший элемент среди стоящих на главной и побочной диагоналях и поменять его местами с элементом, стоящим на пересечении этих диагоналей
C++ Работа с мышью в Borland C++ for DOS http://www.cyberforum.ru/cpp-beginners/thread566952.html
Не получается доделать задачу. Помогите, пожалуйста. Задание: в произвольном месте окна появляются символы, нужно попасть по ним мышкой. Начальный счёт 8, если не попал -1, если попал +1. #include <stdio.h> #include <dos.h> #include <stdlib.h> #include <conio.h> void initMouse() { _asm{ mov ax,00h int 33h
C++ Игры с Природой Сразу говорю, код не мой, но фишка в том что он вообще перестал работать. В первый раз он заверил меня ошибкой, что нет файла, а щас просто открывается консоль и все. Он молчит. Не ошибок, не сообщений. Вообще ничего. По идее не должен так долго думать... Не могу понять что с ним такое... // tpr_kursovaya.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h"... подробнее

Показать сообщение отдельно
Holsteng
 Аватар для Holsteng
47 / 10 / 3
Регистрация: 26.03.2012
Сообщений: 246
06.05.2012, 14:59  [ТС]     Перегрузка операции +
Код
#include <iostream>
#include "Rational.h"
using namespace std;

Rational::Rational( int a, int b )
{
	 Setchislitel( a, b, true );
}

int Rational::Correction ( int a, int b )
{ 
	int n = a > b ? b : a;

	for (int i = 2; i <= n; ++i )

		if ( a % n == 0 && b % n == 0 )

			return n;
	return 1;
}

void operator<<( ostream& output, const Rational & b) 
{
	output << b.chislitel << b.znamenatel;
}

void Rational::Setchislitel(int a, int b, bool flac)
{
	
	if ( b > 0 && flac )
	{
		int base = Correction( a,b );
			chislitel=a / base; 
			znamenatel=b / base;
	}
	else
		if ( b < 0 )
		cout << "Знаменатель меньше нуля или равен 0";

	if (!flac)
	{
		chislitel=a; 
		znamenatel=b;
	}

}

const Rational& Rational::operator + (const Rational& plus)
{
	Rational sky;

	sky.znamenatel = plus.znamenatel * this->znamenatel;

	sky.chislitel = ((sky.znamenatel)/plus.znamenatel)*plus.chislitel + 
		((sky.znamenatel)/this->znamenatel)*this->chislitel;
	int base = Correction(sky.znamenatel, sky.chislitel);

	sky.chislitel=sky.chislitel/base;

	sky.znamenatel=sky.znamenatel/base;

	return sky;
}

const Rational& Rational::operator-(const Rational& plus)
{
	Rational sky;

	sky.znamenatel = plus.znamenatel * this->znamenatel;

	sky.chislitel = (sky.znamenatel)/plus.chislitel - 
		(sky.znamenatel)/this->chislitel;
	int base = Correction(sky.znamenatel, sky.chislitel);

	sky.chislitel=sky.chislitel/base;

	sky.znamenatel=sky.znamenatel/base;

	return sky;
}

const Rational& Rational::operator*(const Rational& plus)
{
	Rational sky;

	sky.znamenatel = plus.znamenatel * this->znamenatel;

	sky.chislitel = plus.chislitel * this->chislitel;

	int base = Correction(sky.znamenatel, sky.chislitel);

	sky.chislitel=sky.chislitel/base;

	sky.znamenatel=sky.znamenatel/base;
	
	return sky;
}

const Rational& Rational::operator/(const Rational& plus)
{
	Rational sky;

	sky.chislitel = plus.znamenatel * this->znamenatel;

	sky.znamenatel = plus.chislitel * this->chislitel;

	int base = Correction(sky.znamenatel, sky.chislitel);

	sky.chislitel=sky.chislitel/base;

	sky.znamenatel=sky.znamenatel/base;
	
	return sky;
}

const Rational& Rational::operator = (const Rational& x)
	
{
	if (&x!=this)
	{
		Setchislitel ( x.chislitel,x.znamenatel, false );
		return *this;
	}
	else
		if ( &x==this )
			cout << "Самоприсваивание";
	
}

bool Rational::operator!=  (const Rational& x) const
	
{		
	return !( &x==this );
}

bool Rational::operator < (const Rational& x) const
	
{		
	if( this->chislitel < x.chislitel || this->znamenatel < x.znamenatel )

	return true;

	else
		return false;
}

bool Rational::operator == (const Rational& x) const
	
{		
	if( this->chislitel == x.chislitel || this->znamenatel == x.znamenatel )

	return true;

	else
		return false;
}

bool Rational::operator > (const Rational& x) const
	
{		
	return ( x < *this );
}

bool Rational::operator <= (const Rational& x) const
	
{		
	return ( *this < x  );
}

bool Rational::operator >= (const Rational& x) const
	
{		
	return !( *this < x  );
}

void main()
{
	setlocale (LC_ALL, "rus");
	cout << "Введите первую дробь\n";
	int a, b, c, d;
	cin >> a >> b;
	
	Rational integer( a, b )/*, integer1( c, d ), integer2 (2,2)*/;

	cout << "Введите вторую дробь\n";
	cin >> c >> d;
	Rational integer1( c, d ),
		h;
	h=integer + integer1;
	cout << h;
	
	system("pause");
}
 
Текущее время: 13:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru