Форум программистов, компьютерный форум CyberForum.ru

Помогите с Объектно Ориентированным Программированием. Комплексные числа - C++

Восстановить пароль Регистрация
 
Delllinger
0 / 0 / 0
Регистрация: 26.09.2011
Сообщений: 3
28.09.2011, 14:24     Помогите с Объектно Ориентированным Программированием. Комплексные числа #1
Нужно разработать класс для работы с комплексными числами (2 поля - действительное и мнимое)
Методы: Сложение, вычитание и умножение, вывод на эран. Всё с использованием конструктора
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.09.2011, 14:24     Помогите с Объектно Ориентированным Программированием. Комплексные числа
Посмотрите здесь:

C++ Комплексные числа
Комплексные числа C++
C++ Комплексные числа..
C++ Помогите с программированием пожалуйста.
C++ Комплексные числа
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.09.2011, 14:35     Помогите с Объектно Ориентированным Программированием. Комплексные числа #2
Delllinger, что конкретно непонятно? Это задание мелькало уже тысячи раз на форуме/в интернете/в литературе и к нему есть столько же готовых решений. Чем вы уникальны?
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 15:49     Помогите с Объектно Ориентированным Программированием. Комплексные числа #3
Цитата Сообщение от Delllinger Посмотреть сообщение
Нужно разработать класс для работы с комплексными числами (2 поля - действительное и мнимое)
Методы: Сложение, вычитание и умножение, вывод на эран. Всё с использованием конструктора
CComplex.h
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
#ifndef CCOMPLEX_H
#define CCOMPLEX_H
 
#include <stdio.h>
 
class CComplex
{
private:
    float re;
    float im;
public:
    CComplex(){re = 0; im = 0;};//конструктор по умолчанию
    CComplex(float _re = 0, float _im = 0){re = _re; im = _im;};//конструктор преобразования
 
    //Кроме = не использую &
    //т.к  = единсвенный оператор который может изменять значение исходной переменной
    //после всех остальных операторов переменные не должны терпеть изменений
    CComplex operator + (CComplex val)
    {
        return CComplex(re + val.re,im + val.im);
    }
    CComplex operator - (CComplex val)
    {
        return CComplex(re - val.re,im - val.im);
    }
    CComplex operator * (CComplex val)
    {
        return CComplex
            (
                re*val.re - im*val.im, 
                im*val.re + re*val.im
            );
    }
    CComplex &operator = (float val)
    {
        re = val;
    }
    CComplex &operator = (CComplex val)
    {
        re = val.re;
        im = val.im;
        return CComplex(re,im);
    }
    void Show()
    {
        printf("%.f + j*(%.f)\r\n",re,im);
    }
};
 
#endif
main.cpp
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "CComplex.h"
#include <conio.h>
 
int main()
{
    CComplex a = 5.2;//5.2 + j*0
    CComplex b(5.3,6.3);
    printf("a = ");a.Show();
    printf("b = ");b.Show();
 
    printf("a + b = ");(a + b).Show();
    CComplex c = a + b;
    c = (c * a);
    printf("c * a = ");c.Show();
    getch();
    return 0;
}
a = 5 + j*(0)
b = 5 + j*(6)
a + b = 11 + j*(6)
c * a = 55 + j*(33)

PS:При желании можно ввести деление и другие матфункции сделав класс полной функциональности
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
28.09.2011, 15:59     Помогите с Объектно Ориентированным Программированием. Комплексные числа #4
Учимся пользоваться поиском:
http://www.cyberforum.ru/search.php?searchid=3586669
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.09.2011, 16:01     Помогите с Объектно Ориентированным Программированием. Комплексные числа #5
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
2
CComplex(){re = 0; im = 0;};//конструктор по умолчанию 
CComplex(float _re = 0, float _im = 0){re = _re; im = _im;};//конструктор преобразования
первый конструктор излишен к тому же получается неоднозначность, какой их них вызвать
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 16:12     Помогите с Объектно Ориентированным Программированием. Комплексные числа #6
Цитата Сообщение от Jupiter Посмотреть сообщение
первый конструктор излишен к тому же получается неоднозначность, какой их них вызвать
сделал конструктор по умолчанию чтобы в программе можно было так писать
CComplex a;
a = 5;
CComplex b(5.3,6.3);
//т.е полный функционал

CString так же имеет и тот и тот конструкторы...
Nameless One
Эксперт С++
 Аватар для Nameless One
5753 / 3402 / 255
Регистрация: 08.02.2010
Сообщений: 7,390
28.09.2011, 16:14     Помогите с Объектно Ориентированным Программированием. Комплексные числа #7
-=ЮрА=-, если ты его удалишь, то в программе тоже можно будет так писать. Полный функционал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class foo
{
public:
    foo(int x = 0, int y = 0);
 
private:
    int _x, _y;
};
 
foo::foo(int x, int y)
    : _x(x), _y(y)
{
}
 
int main()
{
    foo f1, f2(3, 4);
    return 0;
}
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
28.09.2011, 16:15     Помогите с Объектно Ориентированным Программированием. Комплексные числа #8
-=ЮрА=-, если в Вашем коде функции main 7-ю строку заменить на
C++
1
CComplex a;// = 5.2;//5.2 + j*0
то вы получите ошибку компиляции о неоднозначности
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 17:05     Помогите с Объектно Ориентированным Программированием. Комплексные числа #9
Цитата Сообщение от Jupiter Посмотреть сообщение
-=ЮрА=-, если в Вашем коде функции main 7-ю строку заменить на
- думаю проще тогда заменить конструктор преобразования
C++
1
CComplex(float _re, float _im){re = _re; im = _im;};
+ заменив конструктор преобразования столкнулся с эрором, поэтому в этом случае перегрузку

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
CComplex &operator = (float val)
сделал уже так
C++
1
2
3
4
5
CComplex &operator = (float val)
    {
        re = val;
        return CComplex(re,im);
    }
Добавлено через 14 секунд
Цитата Сообщение от Jupiter Посмотреть сообщение
-=ЮрА=-, если в Вашем коде функции main 7-ю строку заменить на
- думаю проще тогда заменить конструктор преобразования
C++
1
CComplex(float _re, float _im){re = _re; im = _im;};
+ заменив конструктор преобразования столкнулся с эрором, поэтому в этом случае перегрузку

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
CComplex &operator = (float val)
сделал уже так
C++
1
2
3
4
5
CComplex &operator = (float val)
    {
        re = val;
        return CComplex(re,im);
    }
При таком построении класса код ниже компилируется
Код на Си
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main()
{
    CComplex a;a = 5.2;//5.2 + j*0
    CComplex b(5.3,6.3);
    printf("a = ");a.Show();
    printf("b = ");b.Show();
 
    printf("a + b = ");(a + b).Show();
    CComplex c = a + b;
    c = (c * a);
    printf("c * a = ");c.Show();
    getch();
    return 0;
}


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

Не по теме:

Вообще не буду отвечать если вступаю в дискусию и минусуют...

Nameless One
28.09.2011, 17:18
  #10

Не по теме:

Код на Си
это не код на Си

-=ЮрА=-
28.09.2011, 17:19
  #11

Не по теме:

Цитата Сообщение от Nameless One Посмотреть сообщение
это не код на Си
- минус за это?

Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
28.09.2011, 17:21     Помогите с Объектно Ориентированным Программированием. Комплексные числа #12
C++
1
2
3
4
5
6
CComplex &operator = (CComplex val)
        {
                re = val.re;
                im = val.im;
                return CComplex(re,im);
        }
А что в 5 строчке происходит? Создается новый объект и возвращается?
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 17:28     Помогите с Объектно Ориентированным Программированием. Комплексные числа #13
Цитата Сообщение от Chelioss Посмотреть сообщение
Создается новый объект и возвращается?
- Возвращаем новый объект CComplex(re,im) - инициализированный val
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
28.09.2011, 17:42     Помогите с Объектно Ориентированным Программированием. Комплексные числа #14
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- Возвращаем новый объект CComplex(re,im) - инициализированный val
Возвращаем же ссылку, так? А объект то, созданный внутри метода уничтожится при завершении работы метода, тогда почему это работает?
-=ЮрА=-
Заблокирован
Автор FAQ
28.09.2011, 17:50     Помогите с Объектно Ориентированным Программированием. Комплексные числа #15
Цитата Сообщение от Chelioss Посмотреть сообщение
Возвращаем же ссылку, так? А объект то, созданный внутри метода уничтожится при завершении работы метода, тогда почему это работает?
ССomplex(float _re,float _im) подразумевает выделение памяти под новый объект, privat переменные принимаеют значение _re и _im и после возврата функции не уничтожаются на мой взглад так
Chelioss
179 / 179 / 4
Регистрация: 08.01.2011
Сообщений: 1,131
28.09.2011, 18:13     Помогите с Объектно Ориентированным Программированием. Комплексные числа #16
-=ЮрА=-
На этой строчке:
C++
1
CComplex &operator = (CComplex val)
Предупреждение 2 warning C4172: возвращение адреса локальной или временной переменной

Объект, созданный в методе, уничтожается и возвращается адрес уже на чужую память. Так нельзя делать.
Nameless One
28.09.2011, 18:45
  #17

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
минус за это?
не знаю. Я тебя не минусовал

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.09.2011, 20:45     Помогите с Объектно Ориентированным Программированием. Комплексные числа
Еще ссылки по теме:

Комплексные числа C++
Комплексные числа C++
Написать калькулятор с объектно–ориентированным подходом C++

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

Или воспользуйтесь поиском по форуму:
An1ka
65 / 70 / 2
Регистрация: 30.06.2011
Сообщений: 176
28.09.2011, 20:45     Помогите с Объектно Ориентированным Программированием. Комплексные числа #18
C++
1
2
3
4
5
6
 CComplex &operator = (CComplex val)
{
    re = val.re;
    im = val.im;
    return *this;
}
Yandex
Объявления
28.09.2011, 20:45     Помогите с Объектно Ориентированным Программированием. Комплексные числа
Ответ Создать тему
Опции темы

Текущее время: 08:57. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru