0 / 0 / 0
Регистрация: 06.10.2016
Сообщений: 7
1

Программа работы с комплексными числами, не корректно работает

24.08.2017, 21:24. Показов 672. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите пожалуйста

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

такой код

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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include <stdafx.h>
#include <iostream>
#include<windows.h>
using namespace std;
 
void tabulation ()
{
    char tab = '\t';
    for (int i=5; i>1; --i) cout<<tab;
}
 
void ring ()
{
    tabulation ();
    for ( int i=50;i>0;--i){
        
        //ring();
        if (i%10==0) 
        {
            //system("cls");очистка экрана
            cout<<'\a'<<i/10;
            Sleep(1000);
            //system ("cls");
            cout<<'\b';//кнопка backscape
            
        }
    }cout<<'\b';//кнопка backscape
    cout<<endl;
}
 
class complex   {
//private:
public:
    double real, imag;
 
void assign (complex pc, double r,   double i=0.0)
{
             r=real;
             i=imag;
}
 
complex add (complex a, complex b)
{ 
    complex temp;
    temp.real=a.real+b.real;
    temp.imag=a.imag+b.imag;
    return temp;
}
 
complex minus (complex a, complex b)
{ 
    complex temp;
    temp.real=a.real-b.real;
    temp.imag=a.imag-b.imag;
    return temp;
}
 
complex multiply (complex a, complex b)
{ 
    complex temp;
    temp.real=a.real*b.real-a.imag*b.imag;
    temp.imag=a.real*b.imag+a.imag*b.real;
        return temp;
}
 
complex division (complex a, complex b)
{ 
    complex temp;
    temp.real=(a.real*b.real+a.imag*b.imag)/(a.imag*a.imag-b.imag*b.imag);
    temp.imag=(a.imag*b.real-a.real*b.imag)/(a.imag*a.imag-b.imag*b.imag);;
    return temp;
}
 
void print (complex a) 
{
    cout <<"полученное число равно: "<<a.real<<" - реальная часть \n"<<a.imag<<" - мнимая часть"<<endl;
}
//завершение класса
};
 
 
 
int main()
{
    
    setlocale( LC_ALL,"Russian" );
    
    cout<<"Привет, мы начинаем КВН с комплексными числами\n";
    tabulation();
    ring();
 
    double f=2.5;
    complex w,x,zadd,zminus,zmulty , zdiv ;  //zmulty- умножение комплексных чисел
                            //zdiv - деление комп чисел
    x.assign (*x, 5.5, -3.2);   //x=5.5-3.2*i
    w.assign (*w, f);   //w=2.5-0.0*i;
 
 
    x.print (x);
    w.print(w);
zadd=zadd.add(w,x);   //z=8.0-3.2*i   ?
    zadd.print (zadd);
    
    zminus = zminus.minus(w,x);
    zminus.print    (zminus);
 
    zmulty=zmulty.multiply(w,x);
    zmulty.print    (zmulty);
 
    zdiv=zdiv.division(w,x);
    zdiv.print    (zdiv);
    system ("pause");
    return 0;
    
 
}

Пока что функция "assign" не работает корректно, принимает какие-то значения левые и в итоге программа не работает, это то в чем я разобрался. Подскажите, что тут можно исправить, сам разобраться не могу
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2017, 21:24
Ответы с готовыми решениями:

Не корректно работает программа работы с дробями
Есть код программы, но работает не очень корректно вот код : #include &quot;stdafx.h&quot; #include...

класс для работы с комплексными числами
Здравствуйте.Надо: реализовать класс для работы с комплексными числами(аргумент, модуль, сложение,...

Класс для работы с комплексными числами
ne kompeliruet :S #ifndef COMPLEX0_H_ #define COMPLEX0_H_ class Complex { private: ...

Простенький класс работы с комплексными числами.
Добрый вечер, уважаемые! :) На днях решил вспомнить то, чему учили в университете и понял, что...

6
79 / 67 / 28
Регистрация: 22.04.2016
Сообщений: 384
24.08.2017, 22:00 2
Pupil1983, Вот, подправил ваш код:
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
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
#include <iostream>
#include<windows.h>
using namespace std;
 
void tabulation ()
{
    char tab = '\t';
    for (int i=5; i>1; --i) cout<<tab;
}
 
void ring ()
{
    tabulation ();
    for ( int i=50;i>0;--i){
        
        //ring();
        if (i%10==0) 
        {
            //system("cls");очистка экрана
            cout<<'\a'<<i/10;
            Sleep(1000);
            //system ("cls");
            cout<<'\b';//кнопка backscape
            
        }
    }cout<<'\b';//кнопка backscape
    cout<<endl;
}
 
class complex   {
//private:
public:
    double real, imag;
 
void assign (complex &pc, double r,   double i=0.0)
{
    if(i != 0.0)
    {
        pc.real = r;
        pc.imag = i;
    }
    else
    {
        pc.real = r;
        pc.imag = i;
    }
}
 
complex add (complex a, complex b)
{ 
    complex temp;
    temp.real=a.real+b.real;
    temp.imag=a.imag+b.imag;
    return temp;
}
 
complex minus (complex a, complex b)
{ 
    complex temp;
    temp.real=a.real-b.real;
    temp.imag=a.imag-b.imag;
    return temp;
}
 
complex multiply (complex a, complex b)
{ 
    complex temp;
    temp.real=a.real*b.real-a.imag*b.imag;
    temp.imag=a.real*b.imag+a.imag*b.real;
        return temp;
}
 
complex division (complex a, complex b)
{ 
    complex temp;
    temp.real=(a.real*b.real+a.imag*b.imag)/(a.imag*a.imag-b.imag*b.imag);
    temp.imag=(a.imag*b.real-a.real*b.imag)/(a.imag*a.imag-b.imag*b.imag);;
    return temp;
}
 
void print (complex a) 
{
    cout <<"полученное число равно: "<<a.real<<" - реальная часть \n"<<a.imag<<" - мнимая часть"<<endl;
}
//завершение класса
};
 
 
 
int main()
{
    
    setlocale( LC_ALL,"Russian" );
    
    cout<<"Привет, мы начинаем КВН с комплексными числами\n";
    tabulation();
    ring();
 
    double f=2.5;
    complex w,x,zadd,zminus,zmulty , zdiv ;  //zmulty- умножение комплексных чисел
                            //zdiv - деление комп чисел
    x.assign (x, 5.5, -3.2);   //x=5.5-3.2*i
    w.assign (w, f);   //w=2.5-0.0*i;
 
 
    x.print (x);
    w.print(w);
zadd=zadd.add(w,x);   //z=8.0-3.2*i   ?
    zadd.print (zadd);
    
    zminus = zminus.minus(w,x);
    zminus.print    (zminus);
 
    zmulty=zmulty.multiply(w,x);
    zmulty.print    (zmulty);
 
    zdiv=zdiv.division(w,x);
    zdiv.print    (zdiv);
    system ("pause");
    return 0;
    
 
}
Это то, что вы хотели?

Добавлено через 10 минут
Хотя, лучше будет вот так. Не продумал сначала.
C++
1
2
3
4
5
void assign (complex &pc, double r,   double i=0.0)
{
        pc.real = r;
        pc.imag = i;
}
0
0 / 0 / 0
Регистрация: 06.10.2016
Сообщений: 7
24.08.2017, 23:08  [ТС] 3
Цитата Сообщение от igdev Посмотреть сообщение
igdev
Благодарю, заработало
Теперь нужно снова разбираться с принципами работы классов и указателей
0
79 / 67 / 28
Регистрация: 22.04.2016
Сообщений: 384
25.08.2017, 00:52 4
Pupil1983,

Не по теме:

Из правил форума:

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

0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
25.08.2017, 01:27 5
igdev,

Не по теме:

из правил форума:

10. Запрещено накручивать репутацию и другую статистику пользователя любым способом, ..., а также склонять (агитировать) других пользователей к ее изменению.

1
79 / 67 / 28
Регистрация: 22.04.2016
Сообщений: 384
25.08.2017, 10:44 6
nd2,

Не по теме:

Никого не склоняю. Просто, если проблема решена, то почему бы её не отметить, как решенную, дабы другие пользователи не тратили время на чтение и темы и её проблемы, а потом в конце видели текстовое сообщение от ТС, что проблема решена? Имхо. :)

0
nd2
3437 / 2816 / 1249
Регистрация: 29.01.2016
Сообщений: 9,426
25.08.2017, 18:16 7
igdev,

Не по теме:

Я же не спорю, я за. Я про правила.:)

0
25.08.2017, 18:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2017, 18:16
Помогаю со студенческими работами здесь

Класс Complex для работы с комплексными числами
Создать класс Complex для работы с комплексными числами. В классе переопределить арифметические...

Шаблон класса для работы с комплексными числами
Есть такая программа: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; ...

Описать класс для работы с комплексными числами
Описать класс для работы с комплексными числами (ввод-вывод, сложение, вычисление модуля)....

Создать класс для работы с тригонометрическими комплексными числами - C++
Создать класс для работы с тригонометрическими комплексными числами. Комплексное число в...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru