Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 11.03.2018
Сообщений: 7
1

Операции с комплексными числами через ООП

11.03.2018, 22:32. Показов 4945. Ответов 13
Метки нет (Все метки)

Друзья, написал код программы. ошибку при компиляции выдает:
fatal error LNK1169: обнаружен многократно определенный символ - один или более

код программы:
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
#include <iostream>
using namespace std;
class Complex_int //Определение класса
    {//Определение данных-членов класса
        public:
        int real; //Действительная часть комплексного числа в алгебраической форме
        int image;  //Мнимая часть комплексного числа в алгебраической форме
        Complex_int del (Complex_int add1, Complex_int add2);
        Complex_int sub_c  (Complex_int add1, Complex_int add2)
            {Complex_int sum; // Объявление внутренней переменной
            sum.real = add1.real*add2.real;
            sum.image =add1.image*add2.image;
            return sum;
            } 
        // Конструктор класса без аргументов
        Complex_int ()
            {real=0;
            image =0;
            }
                    ~Complex_int(){}
 
        Complex_int del (Complex_int a1, Complex_int a2)
        {Complex_int tmp;
        tmp.real=a1.real/a2.real;
        tmp.image=a1.image/a2.image;
        return tmp;}
 
};
 
 
int main () // Главная программа
    {   Complex_int a, b, d, s;
        a.real = 2; //Задание начальных значений
        a.image = 3;
        b.real=4;
        b.image=5;
        s=a;        //Копирование комплексных переменных
        d=b;
        s=a.del (a, b); 
        d=a.sub_c (b, a); 
 
    }
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2018, 22:32
Ответы с готовыми решениями:

Операции над комплексными числами
В данной программе нужно создать дружескую функцию класса Komplex. Таким образом чтобы читалась...

Операции над комплексными числами
Дано вот такое задание: Написать программу на языке C++, реализующую арифметику комплекс- ных...

Операции с комплексными числами и перегрузка операторов << и >>
Здрасте! Пытаюсь решить задачу по написанию программы, которая производит действия с комплексными...

Реализовать арифметические операции с комплексными числами
Создайте структуру, описывающую комплексное число. Реализуйте арифметические операции с...

13
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
11.03.2018, 22:43 2
У вас в проекте только один файл?
Ошибка LNK2005 перед этим была? Что пишет?
1
0 / 0 / 0
Регистрация: 11.03.2018
Сообщений: 7
11.03.2018, 23:04  [ТС] 3
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
#include <iostream>
using namespace std;
class Complex_int //Определение класса
    {//Определение данных-членов класса
        public:
        int m_real; //Действительная часть комплексного числа в алгебраической форме
        int m_image;    //Мнимая часть комплексного числа в алгебраической форме
        //Объявление внешней функции-члена
        Complex_int add_c (Complex_int add1, Complex_int add2);
        //Определение функции-члена  класса
        Complex_int sub_c (Complex_int add1, Complex_int add2)
            {Complex_int umn; // Объявление внутренней переменной
            umn.m_real = add1.m_real-add2.m_real;
            umn.m_image =add1.m_image-add2.m_image;
            return umn;
            } 
        // Конструктор класса без аргументов
        Complex_int ()
            {m_real=0;
            m_image =0;
            }
              ~Complex_int(){}
    };// Конец определения класса
//Определение внешней функции-члена Complex_int
    Complex_int Complex_int :: add_c (Complex_int add1, Complex_int add2)
        {Complex_int tmp;
        tmp.m_real=add1.m_real/add2.m_real;
        tmp.m_image=add1.m_image/add2.m_image;
        return tmp;}
 
int main () // Главная программа
    {   Complex_int a, b, d, s;
        a.m_real = 2; //Задание начальных значений
        a.m_image = 3;
        b.m_real=4;
        b.m_image=5;
        s=a;        //Копирование комплексных переменных
        d=b;
        s=a.add_c (a, b); //Сложение комплексных переменных внешней функцией-членом класса
        d=a.sub_c (b, a); //Вычитание комплексных переменных функцией-членом класса
        s=a.add_c (a, b);
        
    }
изменил код, пишет, что программа закончилась с кодом 0. вопрос, как вывести на экран через cout результат вычислений?
cout << "hello world";

не выводит даже это

Добавлено через 10 минут
Lambont, отписался
0
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
11.03.2018, 23:05 4
Цитата Сообщение от vlasov_alex Посмотреть сообщение
пишет, что программа закончилась с кодом 0
Так это значит она скомпилировалась
Цитата Сообщение от vlasov_alex Посмотреть сообщение
cout << "hello world";
не выводит даже это
Вы какой тип проекта создавали?
0
0 / 0 / 0
Регистрация: 11.03.2018
Сообщений: 7
11.03.2018, 23:12  [ТС] 5
Lambont, файл c++ (.cpp).

у меня по структуре кода все в порядке? в главной части в main у меня получается вызывается функция и начинает деление и умножение верно? как я могу результаты вывести на экран? через коут не получается. а в идеале члены комплексных чисел надо бы тоже вводить с руки через син. я просто не так давно в этом деле и вот хочу получить небольшую помощь. облазил форумы так ответ на свой вопрос и не нашел
0
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
11.03.2018, 23:20 6
Или сдаётся мне, что вы компилируете и запускаете программу просто на кнопку F5, и окошко с консолью сразу же исчезает?
Запустите Ctrl+F5 (запуск без отладки) или в конце main добавьте например:
C++
1
2
3
4
5
6
7
int main () 
{
 
        /* КОД ПРОГРАММЫ */
 
        system("PAUSE");
}
И тогда окно с консолью сразу же не закроется и покажет свой вывод.

Добавлено через 6 минут
Цитата Сообщение от vlasov_alex Посмотреть сообщение
файл c++ (.cpp).
Это просто расширение файла в котором пишется код. Тип проекта - это то что вы выбирали при создании:
Файл -> Создать -> Проект
0
0 / 0 / 0
Регистрация: 11.03.2018
Сообщений: 7
11.03.2018, 23:40  [ТС] 7
Lambont, консольное приложение win32, если вы об этом.
0
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
11.03.2018, 23:47 8
Цитата Сообщение от vlasov_alex Посмотреть сообщение
через коут не получается. а в идеале члены комплексных чисел надо бы тоже вводить с руки через син
Замените весь main:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
int main() // Главная программа
{
    Complex_int a, b, d, s;
    cout << "a.m_real: ";
    cin >> a.m_real; //Задание начальных значений
    cout << "a.m_image: ";
    cin >> a.m_image;
    cout << "b.m_real: ";
    cin >> b.m_real;
    cout << "b.m_image: ";
    cin >> b.m_image;
    s = a;        //Копирование комплексных переменных
    d = b;
    s = a.add_c(a, b); //Сложение комплексных переменных внешней функцией-членом класса
    d = a.sub_c(b, a); //Вычитание комплексных переменных функцией-членом класса
    s = a.add_c(a, b);
 
    cout << "s.m_real = " << s.m_real << endl
         << "s.m_image = " << s.m_image << endl
         << "d.m_real = " << d.m_real << endl
         << "d.m_image = " << d.m_image << endl;
 
}
ещё рекомендую заменить типы полей m_real и m_image на double
1
0 / 0 / 0
Регистрация: 11.03.2018
Сообщений: 7
11.03.2018, 23:48  [ТС] 9
Lambont, как мне на экран через cout вывести результат вызова функций? ну грубо говоря я же не могу написать:

cout << "комплексное число = " << d;

а как сделать иначе?
0
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
11.03.2018, 23:49 10
Лучший ответ Сообщение было отмечено vlasov_alex как решение

Решение

Цитата Сообщение от vlasov_alex Посмотреть сообщение
а как сделать иначе?
Выводить поля класса
1
0 / 0 / 0
Регистрация: 11.03.2018
Сообщений: 7
11.03.2018, 23:56  [ТС] 11
Lambont, годно! спасибо большое.

Добавлено через 5 минут
Lambont, смотри вот такой код получился. в конце он компилирует 4 значения на экран выводит. первые два равны нулю, а вторые два это перемножение, ну ты понял. а вот деления там нету. откуда 0 появляются я не знаю.

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
#include <iostream>
using namespace std;
class Complex_int //Определение класса
    {//Определение данных-членов класса
        public:
        int m_real; //Действительная часть комплексного числа в алгебраической форме
        int m_image;    //Мнимая часть комплексного числа в алгебраической форме
        //Объявление внешней функции-члена
        Complex_int add_c (Complex_int add1, Complex_int add2);
        //Определение функции-члена  класса
        Complex_int sub_c (Complex_int add1, Complex_int add2)
            {Complex_int umn; // Объявление внутренней переменной
            umn.m_real = add1.m_real*add2.m_real;
            umn.m_image =add1.m_image*add2.m_image;
            return umn;
            } 
 
    };// Конец определения класса
//Определение внешней функции-члена Complex_int
    Complex_int Complex_int :: add_c (Complex_int add1, Complex_int add2)
        {Complex_int tmp;
        tmp.m_real=add1.m_real/add2.m_real;
        tmp.m_image=add1.m_image/add2.m_image;
        return tmp;}
 
int main() // Главная программа
{
    Complex_int a, b, d, s;
    cout << "a.m_real: ";
    cin >> a.m_real; //Задание начальных значений
    cout << "a.m_image: ";
    cin >> a.m_image;
    cout << "b.m_real: ";
    cin >> b.m_real;
    cout << "b.m_image: ";
    cin >> b.m_image;
    s = a;        //Копирование комплексных переменных
    d = b;
    s = a.add_c(a, b); //Сложение комплексных переменных внешней функцией-членом класса
    d = a.sub_c(b, a); //Вычитание комплексных переменных функцией-членом класса
 
    cout << "s.m_real = " << s.m_real << endl
         << "s.m_image = " << s.m_image << endl
         << "d.m_real = " << d.m_real << endl
         << "d.m_image = " << d.m_image << endl;
 
}
Добавлено через 58 секунд
Lambont, у нас просто есть деление в коде (внешняя функция члена). так вот она не работает почему то
0
93 / 91 / 62
Регистрация: 23.11.2013
Сообщений: 242
12.03.2018, 00:01 12
Цитата Сообщение от vlasov_alex Посмотреть сообщение
откуда 0 появляются я не знаю
Потому что m_real и m_image являются целыми числами (тип int), они при обычном делении отбрасывают получившеюся дробную часть.
Попробуйте, как я сказал выше:
Цитата Сообщение от Lambont Посмотреть сообщение
рекомендую заменить типы полей m_real и m_image на double
Замените 6 и 7 строки:
C++
1
2
        double m_real; //Действительная часть комплексного числа в алгебраической форме
        double m_image;    //Мнимая часть комплексного числа в алгебраической форме
0
0 / 0 / 0
Регистрация: 11.03.2018
Сообщений: 7
12.03.2018, 00:06  [ТС] 13
Lambont, огонь огонь. слушай, я тебя могу где то помимо этого форума найти? просто нужно еще пару вопросов по с++, если что даже за помощь (не написание, а именно обьяснение) могу сам чем нибудь помочь)
0
Lambont
12.03.2018, 00:54     Операции с комплексными числами через ООП
  #14

Не по теме:

vlasov_alex, так задавайте их здесь на форуме в новых темах, тут, как правило, ответ всегда дадут. :)

Ну а так, в принципе, у любого профиля пользователя личка есть, там можно многое обсудить... в том числе и где кого найти :D

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.03.2018, 00:54

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

Операции и функции в работе в классе с комплексными числами С++ Visual Studio
Помогите пожалуйста. Написала программу, но считает и умножает комплексные числа не правильно....

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

Структуры: арифметические операции (сложение, вычитание, умножение, деление) над комплексными числами
Написать программу, реализующую арифметические операции (сложение, вычитание, умножение, деление),...


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

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

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