Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.81/68: Рейтинг темы: голосов - 68, средняя оценка - 4.81
7 / 11 / 0
Регистрация: 01.08.2012
Сообщений: 99

Комплексные числа

01.08.2012, 13:30. Показов 14520. Ответов 38
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Изучаю сейчас C++ по Дейтелам, там попалось задание - создать класс комплексное число с функциями: сложение, вычитание, вывод числа в виде (re, im). Была проблема с первыми двумя функциями. Пошёл шарить по форумам - нашёл только варианты с перегрузкой операторов, а такого в книжке нет до этого задания, то есть надо типа обойтись без перегрузки. Я взял написал по-тупому, пока только сложение (смысл делать остальное, когда оно должно быть построено по тому же принципу, а я может в чём ошибаюсь). Посмотрите пжлст мою программу и скажите насколько я идиот прокомментриуйте функцию add, сложения то бишь: так вообще можно делать? Не вызовет ли это каких-либо проблем? Программа работает и выдаёт вполне себе человеческий результат, но мало ли где могут быть подводные грабли.
И да, если мой вариант всё-таки правильный, почему ВЕЗДЕ, где ни поищу, попадаются варианты с перегрузкой? Они чем-то лучше?
Буду очень благодарен за ответ идиот ли я и почему, учиться мне особо не у кого, а надо.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <cmath>
 
using std::cin;
using std::cout;
using std::endl;
 
class Complex
{
public:
    Complex(double = 0.0, double = 0.0);
    void print_number();
    Complex add(Complex, Complex);
 
private:
    double re, im;
 
};
 
Complex::Complex(double r, double i) //конструктор со значениями по умолчанию
{
    re=r; im=i;
}
void Complex::print_number() //вывод числа
{
    cout << "( " << re << ", " << im << " )" << endl;
}
Complex Complex::add(Complex a, Complex b) //сложение
{
    Complex x;
 
    x.re=a.re+b.re;
    x.im=a.im+b.im;
 
    return x;
}
int main()
{
    Complex complex1(3.0, 5.5), complex2(2.0, -1.0), complex_sum;
    //создаём объекты, задаём значения
 
    complex1.print_number();//вывести первое число
    complex2.print_number();//вывести второе число
    complex_sum=complex_sum.add(complex1, complex2);//сложить их
    complex_sum.print_number();//вывести результат
 
    return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.08.2012, 13:30
Ответы с готовыми решениями:

Комплексные числа
Как вы думаете. Допустим, у нас есть i. То самое, что значит -1. Можно ли как-то реализовать, например, с помощью #define i таким образом,...

Комплексные числа
Сформировать массив из 10 элементов в диапазоне из структуры комплексных чисел.

Комплексные числа
Не могу решить эту задачу!Напишите Алгоритм пожалуйста,вот условие: 1)Вводятся два комплексных числа в алгебраической форме. Написать...

38
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.08.2012, 14:13
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от John Prick Посмотреть сообщение
grizlik78, конструктор копирования в любом случае необходим.
Здесь компилятор его самостоятельно сделает вполне подходящим. Но можно и самому написать. Если написать правильно, то хуже не станет
0
59 / 59 / 8
Регистрация: 29.06.2012
Сообщений: 188
01.08.2012, 14:16
Цитата Сообщение от John Prick Посмотреть сообщение
grizlik78, конструктор копирования в любом случае необходим.
имеет смысл делать конструктор копирования, если есть указатели или ссылки..
0
2410 / 1946 / 764
Регистрация: 27.07.2012
Сообщений: 5,582
01.08.2012, 14:19
Цитата Сообщение от grizlik78 Посмотреть сообщение
Здесь компилятор его самостоятельно сделает вполне подходящим.
Вот они издержки моего MSVS6.0. у меня он самостоятельно ничего за меня делать не будет.
0
Эксперт С++
 Аватар для grizlik78
2383 / 1667 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
01.08.2012, 14:22
John Prick, я с этим чудом техники давно уже не сталкивался, но думаю ты ошибаешься. Умолчательные конструкторы (в том числе и копирования) появились в языке задолго до первого стандарта и VC6.
0
2410 / 1946 / 764
Регистрация: 27.07.2012
Сообщений: 5,582
01.08.2012, 14:35
grizlik78, умолчательный конструктор копирования там будет, но надеяться, что он правильно скопирует внутренние поля нельзя, только если класс совсем уж простой. Впрочем, это уже оффтоп.
0
01.08.2012, 14:36

Не по теме:

Ну, класс и есть простой, побитового копирования вполне хватает. Ладно, не будем развивать тему :)

0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
01.08.2012, 15:02
kozlik_kozlik, если комплексы по простому, то посмотри сюда
https://www.cyberforum.ru/faq/... ost2432704
Здесь крайне простая реализация решение квадратного уравнения с D < 0
https://www.cyberforum.ru/faq/... ost2435222
Здесь таблица значений функции с комплексным значением
https://www.cyberforum.ru/faq/... ost2439450
Ну и далее по нарастающей вплоть до класса CComplex

Добавлено через 1 минуту

Не по теме:

PS:

Цитата Сообщение от kozlik_kozlik Посмотреть сообщение
using std::cin;
using std::cout;
using std::endl;
- это всё спокойно можно заменить 1 строкой using namespace std хуже код от этого не станет...

0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
01.08.2012, 15:32
Цитата Сообщение от -=ЮрА=-
- это всё спокойно можно заменить 1 строкой using namespace std хуже код от этого не станет...
Вообще-то будет, т.е. и с уже using плохо ...

Важно в основном не то что использовать using или using namespace, а то где это делать...
Не хорошо это делать в глобальном пространстве.

Если что то используется в классе
C++
1
2
3
4
void Complex::print_number() //вывод числа
{
    cout << "( " << re << ", " << im << " )" << endl;
}
лучше указывать явно std::
C++
1
2
3
4
void Complex::print_number() //вывод числа
{
    std::cout << "( " << re << ", " << im << " )" << std::endl;
}
Либо помещать using во внутрь метода.Это улучшит читаемость и обезопасит от конфликта имен

Добавлено через 10 минут
Если расматривать это метод, то наверное лучше его немного обобщить
C++
1
2
3
4
void Complex::print_number(std::istream &stream) //вывод числа
{
    stream << "( " << re << ", " << im << " )" << std::endl;
}
Так как в будующем может понадобится выводить в данные в другие потоки ( например в файл).
Но думаю лучшим вариантом было бы перегрузить оператор << относительно класса.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
01.08.2012, 15:45

Не по теме:

Avazart, я не хочу спорить тут всё рассказал https://www.cyberforum.ru/blogs/34326/blog275.html
От того что тыкаем везде space:: умными дядями вы не станете, а в моих глазах это вообще глупость. Есть желание поспорить что либо заходи в блог, я покажу и тебе что ничего такого в этом нет, даже выгоды имеются от экономии и понятности кода



Добавлено через 1 минуту

Не по теме:

Цитата Сообщение от Avazart Посмотреть сообщение
Либо помещать using во внутрь метода.
- это вообще бред!
Цитата Сообщение от Avazart Посмотреть сообщение
лучше указывать явно std::
- почему лучше?Потому что все бездумно так пишут?:)

0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
01.08.2012, 16:06
У меня нет и капли сомнения в том что я говорю (и в том что говорят умные дяди пишущие книжки) поэтому и желания спорить нет.

Столько страниц в блоге и вас еще не переубедили в очевидном...
Что на водит на мысль вы наверное не умеете просто призновать свою не правоту.


Класс лучше оформлять в отдельном файле ( и желательно в оформленом в отдельном пространстве ).
А значит ваши юзинги перекочуют и в хедер что в дальнейшем может повлеч конфликт имен при подключении ваших исходников кем-то другим в другую программу в другой среде где свои имена ( а может и вами лично по тому как груду кода в памяти не удержишь)

Более того если кода много "глобальные" юзинги плохо читаются. Их тяжелее найти в большом файле нежели в конкретной области видимости.

Цитата Сообщение от -=ЮрА=-
- это вообще бред!
Ну а локализовывать переменные тоже бред ?

Цитата Сообщение от -=ЮрА=-
- почему лучше? Потому что все бездумно так пишут?
Хотя бы из расчета того что ваш код может расширятся и может использоваться другими программистами (которые повидимому не особо горят желанием разбираться что у вас там и как...)

Читаем допустим такой код
C++
1
regex re("*.txt");
Что тут имелось ввиду boost::regex или std::regex (из нового стандарта) или my::regex или regex из IDE или чужего исходника?
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
01.08.2012, 16:25
Avazart, ладно не буду спорить, для этого у меня есть блог, если не умеете писат ьпросто пишите сложно - это дело сугубо личное. Не надо просто привселюдно писать вот такие фразы
Цитата Сообщение от Avazart Посмотреть сообщение
это всё спокойно можно заменить 1 строкой using namespace std хуже код от этого не станет...
Вообще-то будет, т.е. и с уже using плохо ...
. В рамках форума холиворить не хочу, а в блоге я ответил на все как бы непреодолимые преграды...

Добавлено через 3 минуты
Цитата Сообщение от Avazart Посмотреть сообщение
Читаем допустим такой код
Код C++
1
regex re("*.txt");
Цитата Сообщение от Avazart Посмотреть сообщение
Что тут имелось ввиду boost::regex или std::regex (из нового стандарта) или my::regex или regex из IDE или чужего исходника?
- если покажешь инклуды и using однозначно скажу.
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
01.08.2012, 16:29
- если покажешь инклуды и using однозначно скажу.
Вот именно !!!
Нужно пролистать весь файл вверх( просматривая все вложенные области видимости) и смотреть инклюды и инклюды инклюдов итп... и где то там в "глубине души" может таится ваш глобальный using
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
01.08.2012, 16:38
Avazart,
Нужно пролистать весь файл вверх
- а ты когда файл открываешь читаешь его сконца?Мне достаточно будет один раз пробежаться по коду и буду знать что к чему, если тебе нет то пожалуйста пиши std:: boost:: но не говори людям что так должно быть без альтернатив...Краткость сестра таланта со space:: ты точно коротко писать не будешь

Не по теме:

Всё давай заканчивать, т.к. всё что ты напишешь дальше я уже читать не буду до момента прихода сюда ТС...

0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
01.08.2012, 17:11
- а ты когда файл открываешь читаешь его сконца?Мне достаточно будет один раз пробежаться по коду и буду знать что к чему
Ну если консольки писать в два файла и три строчки ...
но не говори людям что так должно быть без альтернатив...
А я и не говорил...
Бокопорить и писать не читабельный код никто не запрещает...

Добавлено через 5 минут
Краткость сестра таланта со space:: ты точно коротко писать не будешь
В данном случае сеста лени.
По тому как кроме краткости к коду предъявляются и другие требования такие как ясность и читаемость
0
2410 / 1946 / 764
Регистрация: 27.07.2012
Сообщений: 5,582
01.08.2012, 17:13
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- а ты когда файл открываешь читаешь его сконца?
а если ты в поиске функцию ищешь и жмакаешь по найденным, файл открывается с любой строчки. а ещё в дебаге можно вофти в функцию, которая будет где-то в середине файла, а там в ней методы непонятные. как понять какой из какого нэймспейса? лазить вверх файла? да и если файлов под 1000, за год не запомнишь, какой юзинг в каком используется.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
01.08.2012, 17:23

Не по теме:

Avazart, так для себя просвети по поводу этого

Цитата Сообщение от Avazart Посмотреть сообщение
Бокопорить и писать не читабельный код никто не запрещает..
- т.е ты меня бокопором называешь если я пишу using namespace std так?Ну давай уж раз начал говори как есть!



для Avazart
Добавлено через 8 минут

Не по теме:

Знаешь я уже жалею что помогал тебе здесь
Узнать запущена ли служба Windows
раз уж ты таким "небокопором" оказываешся да ещё и оскорбляешь хотя пробыл тут по меньше моего и совершенно никакого права не имеешь меня оскорблять! Пожалуй занесу тебя в список игнора как это сделал с парой пользователей и просто для меня перестанешь существовать! Не буду говорить ничего, просто взял твою фразу на заметку, "хакер"...

0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
01.08.2012, 17:30
Знаешь я уже жалею что помогал тебе здесь
Я ждал аргументов, а не слюней
0
0 / 0 / 0
Регистрация: 26.11.2018
Сообщений: 3
26.11.2018, 18:12
Кто знает , какие можно перечислить возможные структуры данных для работы с комплексными числами (с++)?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.11.2018, 18:44
Чего? Библиотеки в смысле? В STL есть https://en.cppreference.com/w/cpp/numeric/complex
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
26.11.2018, 18:44

Комплексные числа
2. Даны два комплексных числа в алгебраической форме. Найти их произведение. Пример //Лаб.раб.№ 1. Линейная программа. ...

Комплексные числа
Здравствуйте! у меня большая проблема... я плохо понимаю с++ и с трудом делаю лабы в универе. вот одна из них. Задание:Написать класс,...

Комплексные числа
Доброе время суток! Я новичок в Си++ а задали задание сделать: Заранее спасибо!

Комплексные числа..
Помогите пожалуйста... срочно нужно решение этой задачки.. Описать класс для работы с комплексными числами. Определить методы для...

комплексные числа
дан список, элементы которого являются комплексными числами. Найти сумму элементов списка


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru