Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/34: Рейтинг темы: голосов - 34, средняя оценка - 4.59
1 / 1 / 1
Регистрация: 17.05.2013
Сообщений: 146

Описание класса для представления комплексных чисел

07.10.2013, 01:03. Показов 6847. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Принялся за очередную лабу и вот...
Помогите разобраться немного с понятием описание класса.
В общем задача:
-составить описание класса для представления комплексных чисел. Обеспечить выполнение операций сложения, вычитания и умножения комплексных чисел;
-написать программу, демонстрирующую все разработанные элементы класса.
Объясните, что значит эта самая фраза "составить описание класса", что от меня требуется? Как браться за код, если не понимаешь, чего от тебя хотят=)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.10.2013, 01:03
Ответы с готовыми решениями:

Описание класса для представления комплексных чисел
Здравствуте! Помогите составить описание класса для представления комплексных чисел. При этом необходимо разработать методы-свойства для...

Составить описание класса для представления комплексных чисел
Здравствуйте. Помогите пожалуйста реализовать меню в программе. Тут написан класс по заданию: Составить описание класса для...

Составить описание класса для представления комплексных чисел
Составить описание класса для представления комплексных чисел. Обеспечить выполнение операций сложения, вычитания и умножения комплексных...

5
139 / 133 / 57
Регистрация: 31.01.2012
Сообщений: 435
07.10.2013, 01:15
bochik, Класс задается с помощью ключевого слова class, за которым следует его имя и в фигурных скобках {} дается его описание.
По сути от Вас требуется реализация класса комплексное число.

под рукой у меня есть реализация этого класса на C++. Синтаксис немного изменится, некоторые методы и вовсе не понадобятся, но, возможно, он Вам поможет
Кликните здесь для просмотра всего текста

Заголовочный файл Complex.hpp:
Кликните здесь для просмотра всего текста

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
#ifndef COMPLEX_HPP
#define COMPLEX_HPP
#include <iostream>
#include <math.h>
class Complex
{
private:
    double Re;
    double Im;
public:
    Complex();
    Complex(double re);
    Complex(double re, double im);
    Complex(const Complex& c);
    ~Complex(void);
    double abs() const;
    double argDeg() const;
    double argRad() const;
    Complex pow(int n) const;
    Complex radikal(int n, int k) const;
    Complex conjugate() const;
    Complex log() const;
    Complex pow(const Complex& n, int k) const;
    Complex operator - () const;
    Complex operator + () const;
    Complex& operator = (const Complex& c);
    Complex& operator +=(const Complex& c);
    Complex& operator -=(const Complex& c);
    Complex& operator *=(const Complex& c);
    Complex& operator /=(const Complex& c);
    friend bool operator == (const Complex& c1, const Complex& c2);
    friend bool operator != (const Complex& c1, const Complex& c2);
    friend Complex operator + (const Complex& left, const Complex& right);
    friend Complex operator - (const Complex& left, const Complex& right);
    friend Complex operator * (const Complex& left, const Complex& right);
    friend Complex operator / (const Complex& left, const Complex& right);
    friend std::ostream& operator<<(std::ostream& s, const Complex& c);
    friend std::istream& operator>>(std::istream& s, Complex& c);
};
#endif // COMPLEX_HPP

Файл исходных текстов реализации класса Complex – Complex.cpp:
Кликните здесь для просмотра всего текста

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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
#include "complex.hpp"
#include <iostream>
#include <cmath>
double M_PI=3.1415926535;
Complex::Complex(void) {
        Re=Im=0.0;
}
Complex::Complex(double re){
        Re=re;
        Im=0.0;
}
Complex::Complex(double re, double im){
        Re=re;
        Im=im;
}
Complex::Complex(const Complex& c){
        Re=c.Re;
        Im=c.Im;
}
Complex::~Complex(void) {}
double Complex::abs() const {
        return sqrt(Re*Re+Im*Im);
}
double Complex::argDeg() const {
        if ((Re==0.0)&&(Im==0.0)) return 0.0;
        if (Re==0.0){
                if (Im>0) return 90.0; else return -90.0;}
        else
                if (Re>0.0) return atan(Im/Re)*180/M_PI;
        else
                {if (Im>=0) return 180+atan(Im/Re)*180/M_PI;
                else return -180+atan(Im/Re)*180/M_PI;}
}
double Complex::argRad() const{
        if ((Re==0.0)&&(Im==0.0)) return 0.0;
        if (Re==0.0){
                if (Im>0) return M_PI/2; else return -M_PI/2;}
        else
                if (Re>0.0) return atan(Im/Re);
        else
                {if (Im>=0) return M_PI+atan(Im/Re);
                else return -M_PI+atan(Im/Re);}
}
Complex Complex::pow(int n) const{
        Complex temp;
        temp.Re=(std::pow(abs(),n))*(std::cos(n*argRad()));
        temp.Im=(std::pow(abs(),n))*(std::sin(n*argRad()));
        return temp;
}
Complex Complex::radikal(int n, int k) const{
    k=k%n;
    Complex temp;
    if ((Re==0)&&(Im==0)) return temp;
    temp.Re=std::pow(abs(),1/n)*cos((argRad()+2*M_PI*(k))/n);
    temp.Im=std::pow(abs(),1/n)*sin((argRad()+2*M_PI*(k))/n);
    return temp;
}
Complex Complex::log() const{
        Complex temp,t1,t2(0,1);
        temp.Re=std::log(abs());
        t1.Re=argRad();
        t1.Im=0;
        t1*=t2;
        temp.Re+=t1.Re;
        temp.Im+=t1.Im;
        return temp;
}
Complex Complex::pow(const Complex& n, int k) const{
        Complex temp,t1,t2;
        //k=k%n;
        t1=log();
        t1.Im+=2*M_PI*k;
        t2=n;
        t2*=t1;
        temp.Re=std::exp(t2.Re)*std::cos(t2.Im);
        temp.Im=std::exp(t2.Re)*std::sin(t2.Im);
        return temp;
}
Complex Complex::conjugate() const{
        return Complex(this->Re, -this->Im);
}
Complex Complex::operator - () const{
    return Complex(-this->Re, -this->Im);
}
Complex Complex::operator + () const{
    return Complex(*this);
}
Complex& Complex::operator = (const Complex& c) {
        Re=c.Re;
        Im=c.Im;
        return *this;
}
Complex& Complex::operator +=(const Complex& c){
    this->Re+=c.Re;
    this->Im+=c.Im;
    return *this;
}
Complex& Complex::operator -=(const Complex& c){
    this->Re-=c.Re;
    this->Im-=c.Im;
    return *this;
}
Complex& Complex::operator *=(const Complex& c){
    double r=this->Re,i=this->Im;
    this->Re=r*c.Re-i*c.Im;
    this->Im=i*c.Re+r*c.Im;
    return *this;
}
Complex& Complex::operator /=(const Complex& c){
    double r=this->Re,i=this->Im;
    this->Re=(r*c.Re+i*c.Im)/(c.Re*c.Re+c.Im*c.Im);
    this->Im=(c.Re*i-c.Im*r)/(c.Re*c.Re+c.Im*c.Im);
    return *this;
}
bool operator == (const Complex& c1, const Complex& c2){
        if ((c1.Re==c2.Re)&&(c1.Im==c2.Im)) return true;
        else return false;
}
bool operator != (const Complex& c1, const Complex& c2){
        if ((c1.Re!=c2.Re)||(c1.Im!=c2.Im)) return true;
        else return false;
}
Complex operator + (const Complex& left, const Complex& right){
        Complex temp(left);
        temp+=right;
        return temp;
}
Complex operator - (const Complex& left, const Complex& right){
    Complex temp(left);
    temp-=right;
    return temp;
}
Complex operator * (const Complex& left, const Complex& right){
    Complex temp(left);
    temp*=right;
    return temp;
}
Complex operator / (const Complex& left, const Complex& right){
    Complex temp(left);
    temp/=right;
    return temp;
}
std::ostream& operator<<(std::ostream& s, const Complex& c){
        if (c.Im>0.0) {if (c.Im==1) s<<c.Re<<"+"<<"i"; else s<<c.Re<<"+"<<c.Im<<"i";}
        else if (c.Im==0.0) s<<c.Re;
        else { if (c.Im==-1) s<<c.Re<<"-i"; else s<<c.Re<<c.Im<<"i";}
        return s;
}
std::istream& operator>>(std::istream& s, Complex& c){
        s>>c.Re;
        s>>c.Im;
        return s;
}

пример
Кликните здесь для просмотра всего текста

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
#include <iostream>
#include <locale>
#include "complex.cpp"
int main()
{
    setlocale(LC_ALL,"rus");
    Complex t(1,2), tt(3,4), A(1,1), B=A;
    Complex z =t+tt;
    std::cout<<"(1+2i) + (3+4i)= "<<z<<std::endl;
    z =t-tt;
    std::cout<<"(1+2i) - (3+4i)= "<<z<<std::endl;
    z =t*tt;
    std::cout<<"(1+2i) * (3+4i)= "<<z<<std::endl;
    z =t/tt;
    std::cout<<"(1+2i) / (3+4i)= "<<z<<std::endl;
    double deg=A.argDeg();
    std::cout<<"аргумент числа 1+i в градусах= "<<deg<<std::endl;
    deg=A.argRad();
    std::cout<<"аргумент числа 1+i в радианах= "<<deg<<std::endl;
    std::cout<<"пример работы конструктора копирования B=A: "<<B<<std::endl;
    std::cout<<"сопрженное комплексное число к А=(1+i): "<<A.conjugate()<<std::endl;
    std::cout<<"модуль числа А: "<<A.abs()<<std::endl;
    std::cout<<"число (1+2i) в квадрате: "<<t.pow(2)<<std::endl;
    std::cout<<"первое из множества чисел (1+2i) в степени (3+4i): "<<t.pow(tt,0)<<std::endl;
    std::cout<<"введите два комлексных числа по принципу сначала действительну часть, пробел, мнимая часть"<<std::endl;
    Complex t1,t2;
    std::cin>>t1>>t2;
    std::cout<<"сумма введенных чисел= "<<t1+t2<<std::endl;
    return 0;

0
212 / 214 / 44
Регистрация: 20.12.2011
Сообщений: 635
07.10.2013, 01:20
собственно нужно разработать класс(тип данных), объекты которого будут хранить информацию о комплексном числе и содержать в себе методы для работы с ними.
более подробно про классы можно погуглить, т.к. это базовое понятие - инфы куча.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  class Complex
  {
    //свойства
    public double Re { get; set; }  //действительная часть
    public double Im { get; set; }  //мнимая часть
    //конструктор класса, вызывается при создании объекта
    public Complex(double re, double im)
    {
      Re = re;
      Im = im;
    }
    //перегруженные операторы
    public Complex operator +(Complex a, Complex b)
    {
      return new Complex(a.Re + b.Re, a.Im + b.Im);
    }
    public Complex operator *(Complex a, Complex b)
    {
      return //тут логику умножения
    }
    //другие методы...
  }
0
1 / 1 / 1
Регистрация: 17.05.2013
Сообщений: 146
07.10.2013, 01:32  [ТС]
Черный ворон, спасибо за примеры, на "войне" все методы полезны=)

Fler, и тут меня спасаешь!!!
Да у меня тут две книги по шарпу, Шилдт и Уолтс, инфы хватает))) Просто не понимал, что надо от меня)
Получается, мне нужно создать класс, заполнить его функциями (те же сложения - вычитания) и вернуть значения на экран? Получается раньше (до этого функции на парах непроходили) все расчёты мы производили в теле "main", а теперь для этого собственный класс, правильно я понял?=)
0
212 / 214 / 44
Регистрация: 20.12.2011
Сообщений: 635
07.10.2013, 01:38
bochik, правильно
мой пример про перегруженные операторы возможно сложноват для понимания будет, можешь заменить на функции. почитай - там ничего сложного нет.
в мейне работай как с другими классами.
если работал с рандомом:
C#
1
Random rand = new Random; int num = rand.Next();
то в этом случае:
1. Random - класс
2. rand - объект
3. rand.Next() - вызов метода
ну это так, лирическое отступление, базовые вещи для улучшения понимая.
0
1 / 1 / 1
Регистрация: 17.05.2013
Сообщений: 146
07.10.2013, 01:45  [ТС]
Fler,
С Random работал, у меня массив (про диагонали, помнишь) принимал значения с помошью этой функции)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.10.2013, 01:45
Помогаю со студенческими работами здесь

Составить описание класса для представления комплексных чисел
Составить описание класса для представления комплексных чисел. Предусмотреть свойство для получения значения числа. Обеспечить перегрузку...

Составить описание класса для представления комплексных чисел
Необходимо составить описание класса для представления комплексных чисел с возможностью задания вещественной и мнимой частей как числами...

Составить описание класса для представления комплексных чисел. Прокомментировать код
Форумчане, помогите пожалуйста, нужно максимально подробное комментирование текстов программ. 1.Составить описание класса для...

Описание класса для представления даты
Доброго дня, не могли бы помочь разобрать в куске этого кода, а именно int datePart1 = GetDatePart(0); int datePart2 =...

Составить описание класса для представления даты
Составить описание класса для представления даты. Предусмотреть возможности установки даты и изменения ее отдельных полей (год, месяц,...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru