Тема: Класс Комплексне число

Як правильно організувати виведення та розрахунок комплексного числа? Комплексний поліном вивести можу, а ось комплексне число ні.
Результат повинен бути щось кшталт цього.

Код Complex.h

``````#pragma once
#include <iostream>

class Complex
{

private:
float real;
float imaginary;

public:

Complex() {
this->imaginary = 0;
this->real = 0;
}

Complex(float real, float imaginary) {
this->real = real;
this->imaginary = imaginary;
}

Complex(const Complex& complex) {
this->imaginary = complex.imaginary;
this->real = complex.real;
}

void setReal(float real) {
this->real = real;
}

void setImaginary(float imaginary) {
this->imaginary = imaginary;
}

float getReal() {
return real;
}

float getImaginary() {
return imaginary;
}

virtual void show() {

std::cout << this->getReal() << " + " << this->getImaginary() << "i";

}

virtual void input() {

std::cout << "Enter real: ";
std::cin >> this->real;
std::cout << "Enter imaginary: ";
std::cin >> this->imaginary;

}

void operator += (Complex complex)
{

this->setReal(this->getReal() + complex.getReal());
this->setImaginary(this->getImaginary() + complex.getImaginary());

}

Complex operator * (int number)
{

return Complex(this->getReal() * number, this->getImaginary() * number);

}

};``````

Код Main.cpp

``````#include <iostream>
#include "Complex.h"
class Polynomial : public Complex
{
private:
int power;
Complex* koeff;
public:
Polynomial()
{
this->power = 0;
this->koeff = NULL;
}

Polynomial(int power, int countOfKoeff, Complex* koeff)
{
this->power = power;

this->koeff = new Complex[countOfKoeff];

for (int i = 0; i < this->getPower(); i++)
{
this->koeff[i] = koeff[i];
}

}

~Polynomial()
{
delete[] koeff;
}
int getPower()
{
return this->power;
}

void setKoeff(Complex * complex, int count)
{
this->koeff = new Complex[count];
this->power = count;

for (int i = 0; i < count; i++)
this->koeff[i] = complex[i];
}
void input() {
int n = 0;
float r, im;
std::cout << "Enter count of elements: ";
std::cin >> n;
Complex* pc = new Complex[n];
for (int i = 0; i < n; ++i) {
std::cout << "Enter real: ";
std::cin >> r;
std::cout << "Enter imaginary: ";
std::cin >> im;
pc[i] = Complex(r, im);
}
this->power = n;
this->koeff = pc;
}

void show()
{
for (int i = 0; i < this->getPower(); i++)
{
std::cout << "(";
this->koeff[i].show();
std::cout << ")";
std::cout << " * " << "x^" << i + 1;

if (i == this->getPower() - 1)
std::cout << " ";
else
std::cout << " + ";
}
}

Complex computePolynomial()
{
Complex complex;

for (int i = 0; i < this->getPower(); i++)
{
complex += this->koeff[i];
}

return complex;
}
};

int main() {
Polynomial polynom;
polynom.input();
polynom.show(); //виведення комплексного поліному

// std::cout << "\n";
//Complex complex; //тут я намагаюся викликати класс комплексне число, але маю результат 0
//complex.show();
}``````

Re: Класс Комплексне число

У вас, як завжди, проблема або з розумінням, або з формулюванням, а оскільки ви намагаєтеся економити власний час на описі проблеми, допомогти вам складно. Чим конкретно вас не влаштовує наведений вами код? Я бачу у ньому купу дрібних проблем, але за вашим описом не можу зрозуміти, що конкретно вас не влаштовує.
П.С. "Викликати клас" - це несумісний набір слів. Клас - це тип даних, так само, як і ціле число чи символ. Не можна "викликати тип даних". Ви ж не можете "викликати число", правда? Викликати можна лише функції. Знову ж таки, не функціональний тип даних, а саме конкретні функції чи методи.

Re: Класс Комплексне число

class Polynomial : public Complex

Хибна логіка
поліном нічого спільного с комплексним числом не має
в якій бурсі навчають такого лайна? був вже дохтур, там увесь код - лайно, тому стримався, щоб не засмучувати. і знов теж саме.

Re: Класс Комплексне число

ur_naz, звідки ви знаєте, може, у нього завдання, крім усього іншого - проілюструвати кілька помилок проєктування (неправильне успадкування, велосипеди, невикористання ініціалізації). Він же завданням не поділився.

Re: Класс Комплексне число

ні, тут видно робіть так, бо так можна