|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - [решено] Комплексные числа - перегрузка оператора >> |
|
C/C++ - [решено] Комплексные числа - перегрузка оператора >>
|
Пользователь Сообщения: 147 |
Профиль | Отправить PM | Цитировать написал:
istream &operator>> (istream &in, Complex &complex) { while( (in >> complex.REAL) != +0 || -0); \\ Вводится REAL пока не встретится знак(+-) -> работает правольно in.ignore(1); // пропускаем j -> работает не правильно in >> complex.IMAG; // Вводим IMAG -> работает не правильно return in; } результат всего это, например: 123123+j0 реальную часть выводит правильно, а мнимую нет(точнее правильно из-за по умолчанию =0) она не изменяется кодом: как быть? еще бы хотелось узнать как определить знак мнимой части? |
|
Отправлено: 00:36, 31-07-2010 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать |
Отправлено: 00:46, 31-07-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 147
|
Профиль | Отправить 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 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|