Нам предлагается создать два экземпляра в основной функции и выполнить вычисления, но я понятия не имею, и всегда есть сообщение об ошибке... Это Complex.h
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <ctime>
class Complex
{
private:
int real1,real2;
double imag1,imag2;
public:
/*Complex();
~Complex(){ };*/
void setReal(int newreal);/*setter function*/
void setImag(double newimag);
int getReal();/*getter function*/
double getImag();
void printcom(int real1, double imag1, int real2, double imag2);/*print the entered values in mathematical form of complex number*/
void Conjugate(int real1, double imag1, int real2, double imag2);/*calculations for complex number*/
void Add(int real1, double imag1, int real2, double imag2);
void Subtract(int real1, double imag1, int real2, double imag2);
void Multiply(int real1, double imag1, int real2, double imag2);
};
Complex.cpp слишком длинный, поэтому я не показываю его здесь, и он сработал.
Тогда основная функция тестирования: testcomplex.cpp
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <fstream>
#include <ctime>
#include "Complex.h"
using namespace std;
int main()
{
Complex a,z,c;
int real;
double imag;
cout << "The real part of the first complex number: "<<endl;
cin >> real;
a.setReal(real);
cout << "The imaginary part of the first complex number: "<<endl;
cin >> imag;
a.setImag(imag);
cout << "The real part of the second complex number: "<<endl;
cin >> real;
z.setReal(real);
cout << "The imaginary part of the second complex number: "<<endl;
cin >> imag;
z.setImag(imag);
c.printcom(a.real1,a.imag1,z.real1,imag1);
c.Conjugate(a.real1,a.imag1,z.real1,imag1);
c.Add(a.real1,a.imag1,z.real1,imag1);
c.Subtract(a.real1,a.imag1,z.real1,imag1);
c.Multiply(a.real1,a.imag1,z.real1,imag1);
return 0;
}
В вашем задании четко указано, что " нас просят создать два экземпляра в основной функции и выполнить вычисления "
Это означает, что класс Complex должен быть записан для определения только одного комплексного числа. Итак, как комплексное число может иметь две реальные и мнимые части? Таким образом, вместо
class Complex
{
private:
int real1,real2;
double imag1,imag2;
должно быть
class Complex
{
private:
int real;
double imag;
Также я не понимаю, почему реальная часть класса имеет тип int
то время как воображаемый имеет тип double
.
Также неверно указаны функции-члены. например, функция printcom должна быть объявлена как
void printcom() const;
или функция Add должна быть объявлена либо как функция-член как
const Complex Add( const Complex &rhs ) const;
как функция, не являющаяся членом
const Complex Add( const Complex &lhs, const Complex &rhs );
каждый экземпляр класса Complex должен сохранять 1 действительную часть и 1 мнимую часть. поэтому, когда вы хотите добавить + два сложных номера, например: z = a + b, вам нужно объявить 3 комплекса, каждый из которых имеет реальную и мнимую часть. Но если вы хотите сохранить 2 комплексных номера в каждом экземпляре вашего класса Complex, ваши коды верны, вам нужно только 2 метода setReal и 2 setImag следующим образом:
void setReal1(int n)
{
real1=n;
}
void setReal2(int n)
{
real2=n;
}
void setImag1(double n)
{
imag1=n;
}
void setImag2(double n)
{
imag2=n;
}
error message
?