Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Комплексные числа - перегрузка оператора >>

Ответить
Настройки темы
C/C++ - [решено] Комплексные числа - перегрузка оператора >>

Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


написал:
Код: Выделить весь код
istream &operator>> (istream &in, Complex &complex)
{
	while( (in >> complex.REAL) != +0 || -0); \\ Вводится REAL пока не встретится знак(+-) -> работает правольно
	in.ignore(1); // пропускаем j -> работает не правильно
	in >> complex.IMAG; // Вводим IMAG -> работает не правильно
	return in;
}
комплексное число вводится в форма REAl + jIMAG, выводится в том же.
результат всего это, например:
123123+j0
реальную часть выводит правильно, а мнимую нет(точнее правильно из-за по умолчанию =0)
она не изменяется кодом:
Код: Выделить весь код
in >> complex.IMAG;
как быть?
еще бы хотелось узнать как определить знак мнимой части?

Отправлено: 00:36, 31-07-2010

 

Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
istream &operator>> (istream &in, Complex &complex)
{
	while( (in >> complex.REAL) != +0 || -0)
		break;
	in.ignore(2);
	in >> complex.IMAG;
	return in;
}
осталось как-то определить знак и учесть его

Отправлено: 00:46, 31-07-2010 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для котвася

Пользователь


Сообщения: 147
Благодарности: 5

Профиль | Отправить PM | Цитировать


ПРИМЕР:
Код: Выделить весь код
//COPMLEX.H
//Определение класса Complex

#ifndef COMPLEX_H
#define COMPLEX_H

#include <iostream>

using std::ostream;
using std::istream;

class Complex
{
	friend ostream &operator<< (ostream &, const Complex &);
	friend istream &operator>> (istream &, Complex &);
public:
	Complex(double = 0.0, double = 0.0);
	Complex operator+ (const Complex &) const;
	Complex operator- (const Complex &) const;
	Complex &operator= (const Complex &);
	void print() const;
private:
	double REAL;
	double IMAG;
};
#endif;
Код: Выделить весь код
//COPMLEX.CPP
//Определение функций=элементов класса Complex

#include <iostream>

using std::cin;
using std::cout;
using std::endl;
using std::ostream;
using std::istream;

#include <iomanip>

using std::setw;

#include "complex.h"

ostream &operator<< (ostream &out, const Complex &complex)
{
	out << complex.REAL << ((complex.IMAG < 0) ? "-j" : "+j") << ((complex.IMAG < 0) ? complex.IMAG*(-1) : complex.IMAG);
	return out;
}

istream &operator>> (istream &in, Complex &complex)
{
	while( (in >> complex.REAL) != +0 || -0)
		break;
	int marker = 0;
	marker = in.get();
	in.ignore(1);
	in >> complex.IMAG;
	if(marker == 45)
		complex.IMAG = -complex.IMAG;
	return in;
}

Complex::Complex(double real, double imag)
{
	REAL = real;
	IMAG = imag;
}

Complex Complex::operator+ (const Complex &operand) const
{
	Complex sum;
	sum.REAL = REAL + operand.REAL;
	sum.IMAG = IMAG + operand.IMAG;
	return sum;
}

Complex Complex::operator-(const Complex &operand) const
{
	Complex diff;
	diff.REAL = REAL - operand.REAL;
	diff.IMAG = IMAG - operand.IMAG;
	return diff;
}

Complex& Complex::operator= (const Complex &right)
{
	REAL = right.REAL;
	IMAG = right.IMAG;
	return *this;
}
Код: Выделить весь код
//MAIN.CPP
//Драйвер проверка класса Complex

#include "complex.h"

#include <iostream>

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

int main()
{
	setlocale(LC_ALL, ".1251");
	cout << "Драйвер проверки класса Complex" << endl;
	cout << "Введите комплексное число в формате Re+jIm" << endl;
	Complex complex;
	cin >> complex;
	cout << complex << endl;
	system("pause");
	return 0;
}
РЕШЕНО
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:16, 31-07-2010 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Комплексные числа - перегрузка оператора >>

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
C/C++ - Матрицы - перегрузка оператора - operator[][] котвася Программирование и базы данных 12 01-08-2010 18:50
2008 - Создание домена для учебных целей с нуля - комплексные вопросы brz Windows Server 2008/2008 R2 5 03-08-2009 01:38
Экранирование оператора mihan81 Хочу все знать 12 12-05-2009 14:15
Как определить оператора? Guest Мобильные ОС, смартфоны и планшеты 2 13-11-2002 18:42
Перегрузка оператора пробел и многое другое. ivank Программирование и базы данных 4 15-09-2002 06:47




 
Переход