Форум программистов, компьютерный форум, киберфорум
Наши страницы

Работа с Complex - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Тетрис на С++ http://www.cyberforum.ru/cpp-beginners/thread1100485.html
Помогите доработать игру. запутался с _kbhit() и _getch() нужно сделать чтобы фигура постоянно падала, а во время нажатия клавиш смещалась. а у меня фигура останавливается и программа ждет ввода с...
C++ Составить программу , проверяющую, попадает ли введенная точка с кооординатами (x;y) в заштрихованную фигуру Составить алгоритм и программу, проверяющую, попадает ли введенная точка с координатами (x;y) в заштрихованную фигуру.Считать, что граница принадлежит фигуре. Помогите пожалуйста http://www.cyberforum.ru/cpp-beginners/thread1100476.html
Что не так с этим кодом? C++
Что не так с этим кодом? #include <stdio.h> struct Texture { unsigned int tex; Texture() { tex = 0; } };
Сумма чисел с рекурсией C++
#include <iostream> using namespace std; int sumchisel(int a,int b) { setlocale(0, "rus"); int sum = 0; for (int i = a; i <= b; i++) sum += i;
C++ Вывести информацию о продукции, выпущенной заданным цехом за последний месяц http://www.cyberforum.ru/cpp-beginners/thread1100420.html
На заводе выпускается несколько наименований деталей. Сведения о деталях включают код детали, количество выпущенных деталей, номер месяца выпуска. Вывести информацию о продукции, выпущенной...
C++ Поиск минимума с помощью рекурсивной функции #include<iostream> #include <time.h> using namespace std; int mina(int ar, int n){ int min = ar; for (int i = 0; i < n; i++){ if (ar < min){ min = ar; } подробнее

Показать сообщение отдельно
Ilot
Модератор
Эксперт С++
1823 / 1181 / 232
Регистрация: 16.05.2013
Сообщений: 3,118
Записей в блоге: 5
Завершенные тесты: 1
19.02.2014, 15:23
Недавно подобная задача была. Разбирайтесь, может поможет:
Кликните здесь для просмотра всего текста
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#include<iostream>
#include<math.h>
using namespace std;
 class CComplex
 {
 private:
     double re;
     double im;
 public:
 
     CComplex():re(0), im(0)
     {}
     CComplex(double val): re(val), im(0)
     {}
     CComplex(double _re, double _im): re(_re), im(_im)
     {}
 
     friend CComplex operator+(CComplex, CComplex);
     friend CComplex operator-(CComplex, CComplex);
     friend CComplex operator*(CComplex, CComplex);
     friend CComplex operator/(CComplex, CComplex);
 
     friend ostream& operator << (ostream&, const CComplex&);
     friend istream& operator >> (istream&, CComplex&);
 };
 
 CComplex operator +(CComplex val1, CComplex val2)
 {
     double  re = val1.re+val2.re;
     double  im = val1.im+val2.im;
     return CComplex(re, im);
 }
 
 CComplex operator -(CComplex val1, CComplex val2)
 {
     double  re = val1.re-val2.re;
     double  im = val1.im-val2.im;
     return CComplex(re, im);
 }
 
 CComplex operator *(CComplex val1, CComplex val2)
 {
     double  re = val1.re*val2.re - val1.im*val2.im;
     double  im = val1.im*val2.im + val1.re*val2.im;
     return CComplex(re, im);
 }
 
 CComplex operator /(CComplex val1, CComplex val2)
 {
     double div = val2.re * val2.re + val2.im * val2.im;
     double re = val1.re*val2.re + val1.im*val2.im;
     double im = -val1.re*val2.im + val1.im*val2.re;
     return CComplex(re / div, im / div);
 }
 
 ostream& operator << (ostream& os, const CComplex& comp)
 {
    std::cout << comp.re;
    if (comp.im >= 0) {
        std::cout << '+';
        std::cout << comp.im << 'i';
    }
    else {
        std::cout << comp.im << 'i';
    }
    return os;
 }
 istream& operator >> (istream& is, CComplex& comp)
 {
    std::cin >> comp.re;
    std::cin >> comp.im;
    return is;
 }
 
 int main()
 {
 CComplex a(3.0, 4.0);
 CComplex b;
 
 std::cout << "Enter a complex number (q to quit):\n";
 
 while (std::cin >> b)
 {
     std::cout << "b is " << b << '\n';
 
     std::cout << "a + b is " << a + b << '\n';
     std::cout << "a - b is " << a - b << '\n';
     std::cout << "a * b is " << a * b << '\n';
     std::cout << "2 * b is " << 2 * b << '\n';
     std::cout << "a/b is " << a / b << '\n';
 
     std::cout << "Enter a complex number (q to quit):\n";
 }
 
 std::cout << "Done!\n";
 return 0;
 }

Цитата Сообщение от cucumberbatch Посмотреть сообщение
Вроде как все правильно, компилятор даже не ругается, но почему-то значения затираются, и я не могу понять почему.
Так вы же сами их затираете:
C++
1
2
3
4
5
6
    Complex Complex::operator+(Complex &fp1)
        {
        fp1.real = real + fp1.real;
        fp1.image = image + fp1.image;
        return fp1;
        }
Здесь вы передаете аргумент по ссылке и меняете значения его полей.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru