Как сделать расчет со значениями в двух случаях?

0

Нам предлагается создать два экземпляра в основной функции и выполнить вычисления, но я понятия не имею, и всегда есть сообщение об ошибке... Это 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;
}
  • 0
    Это своего рода викторина или что-то? Почему вы не показали это error message ?
  • 0
    @PiotrNycz Я изменил частное на реальное и воображаемое, и теперь оно возвращает "complex :: real - личное, и тому подобное.
Показать ещё 1 комментарий
Теги:
class
instance

2 ответа

1

В вашем задании четко указано, что " нас просят создать два экземпляра в основной функции и выполнить вычисления "

Это означает, что класс 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 );
0

каждый экземпляр класса 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;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню