![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Deeoni$ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 24.2.2003 Репутация: нет Всего: нет |
Интересует вопрос как из строки сделать комлексное число.
|
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 27 Всего: 164 |
что такое комплексное число?
![]() atoi не подойдет? ![]() --------------------
|
|||
|
||||
Дрон |
|
|||
![]() Java-ненавистник :) ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3179 Регистрация: 29.12.2002 Где: Санкт-Петербург Репутация: 10 Всего: 92 |
![]() ![]() ![]() Deeoni$ А смотря в каком виду оно у тебя задано. Если в виде a+ib, то тут нужно разбить строку на части "a","+","b". Дальше через atof преобразовать вещественную и комплексную часть из строки в float. И ещё изменить, если надо, знак комплексной части (это если там не "+", а "-"). Если в другом виде, то соответственно по другому нужно разбивать и преобразовывать. Это сообщение отредактировал(а) Дрон - 4.10.2004, 08:18 -------------------- Да. Именно так. |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
ИМХО, чтоб какую-никакую работу с комплексными числами организовать, все равно придеться писать под них класс с переопределенными методами.
Ну или готовую библиотеку поискать ![]() А вопрос "из стороки сделать комплексное число" сам по-себе без пояснений несет мало ясности. |
|||
|
||||
Deeoni$ |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 24.2.2003 Репутация: нет Всего: нет |
мне и надо класс написать простенький сложение, вычитание, деление, умножени, тригонометрическая форма, ввод\вывод. Пусть у нас есть строка любого вида. Я ее пропарсил и получил два числа, вещественную и мнимую часть, теперь как мне присвоить их переменной соответствующего типа. Такая фигня не прокатывает: complex <float> a; float b; float c; //....... a.real()=b; a.imag()=c; //........ компилирую если что gcc.exe Это сообщение отредактировал(а) Deeoni$ - 5.10.2004, 09:01 |
|||
|
||||
Step |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
||||
|
|||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Step,
Deeoni$ Причина очевидна. про шаблон complex<> ты почитал, а про предназначение real() и imag() - нет. А они используються только для вывода, но не для ввода. (да и как ты сепбе представляешь ввод в таком виде?) по поводу иксов ничего не скажу, а вот мсдн приводит пример:
Очевидный недостаток такого решения - дополнительные телодвижения в случае, когда надо изменить только одну часть комплексного числа. |
|||
|
||||
anonym |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 27.11.2006 Репутация: нет Всего: 3 |
А допустим, я хочу добавить в класс complex метод, поворачивающий вектор, соответствующий данному числу на плоскости, на заданный угол. Почему такой код не работает?
|
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
а что значит не работает?
![]() |
|||
|
||||
anonym |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 27.11.2006 Репутация: нет Всего: 3 |
Короче, пишу
получаю Main.cpp(13) : error C2664: '__thiscall MyClass::MyClass(const class MyClass &)' : cannot convert parameter 1 from 'class std::complex<double>' to 'const class MyClass &' Reason: cannot convert from 'class std::complex<double>' to 'const class MyClass' No constructor could take the source type, or constructor overload resolution was ambiguous Main.cpp(14) : error C2228: left of '.real' must have class/struct/union type Main.cpp(14) : error C2228: left of '.imag' must have class/struct/union type Main.cpp(15) : error C2440: 'initializing' : cannot convert from 'class std::complex<double>' to 'class MyClass' No constructor could take the source type, or constructor overload resolution was ambiguous Main.cpp(22) : error C2661: 'MyClass::MyClass' : no overloaded function takes 2 parameters Main.cpp(23) : error C2248: 'Rotate' : cannot access private member declared in class 'MyClass' Main.cpp(11) : see declaration of 'Rotate' Main.cpp(24) : error C2243: 'type cast' : conversion from 'class MyClass *' to 'const class std::complex<double> &' exists, but is inaccessible Что они там такого набабахали в этом complex??? Или я чего не так делаю?) |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Хотя бы так для начала ![]() ![]() |
|||
|
||||
anonym |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 27.11.2006 Репутация: нет Всего: 3 |
Это я так понял написать все варианты конструктора для класса complex и в каждом вызывать конструктор базового класса?...
Да фиг с этим конструктором... Меня больше нарягает, что если даже написать так
то всё равно остаются ошибки Main.cpp(15) : error C2228: left of '.real' must have class/struct/union type Main.cpp(15) : error C2228: left of '.imag' must have class/struct/union type |
|||
|
||||
Xenon |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Ты вообще чего делаешь?
this это указатель, поэтому нужно писать this-> а не this. К тому же зачем? real и imag это функции - чего ты их приводишь к double как переменные ![]() Это сообщение отредактировал(а) Xenon - 11.7.2007, 01:58 |
|||
|
||||
anonym |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 27.11.2006 Репутация: нет Всего: 3 |
||||
|
||||
anonym |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 147 Регистрация: 27.11.2006 Репутация: нет Всего: 3 |
Ну а как всё же расширить этот класс делегированием?... я в принципе представляю себе, что это такое, но как это всё реализовать и чтоб всё грамотно было, с этим проблема... если не трудно, напиши, пожалуйста, код)
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |