Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.09.2014, 18:59   #1
Nickolay0512
Пользователь
 
Регистрация: 26.10.2013
Сообщений: 54
По умолчанию Класс "Комплексные числа". Преобразовать программу из С# в C++

Помогите преобразовать код из C# в C++
Код:
namespace Lab9
{
    class Stroka
    {
        public string pole;
        int a;
        public Stroka() 
        {
            pole = " ";
        }
        public Stroka(string str)
        {
            pole=str;
        }
        public Stroka(char ch)
        {
            string znach = Convert.ToString(ch);
            pole = znach;
        }
        public void GetLong()
        {
            int length = pole.Length;
        }
        public void Clear()
        {
            pole = String.Empty;
        }
    }
    class Complex : Stroka
    {
        string  real;
        string  img;
        public Complex()
        {
            real = "";
            img = "";
        }
        public Complex(string pole)
        {
            string[] temp = pole.Split('i');
            for (int i = 0; i < pole.Length; i++)
            {
                real = temp[0];
                img = temp[1];
            }
            char[] Real = real.ToCharArray();
            char[] Img = img.ToCharArray();
            for(int i=0; i<Real.Length ; i++)
            {
                if (char.IsDigit(Real[i]));
                    else if(Real[0]=='-' || Real[0]=='+');
                else
                {
                    real="0";
                    break;
                }
            }
            for(int i=0; i<Img.Length ; i++)
            {
                if (char.IsDigit(Img[i]));
                    else if(Img[0] == '-' || Img[1] == '+') ;
                else
                {
                    img = "0";
                    break;
                }
            }
        }
        public string GetReal()
        {
            return real;
        }
        public string GetImg()
        {
            return img;
        }
          public override string ToString()
          {
              return String.Format("{0}", real+"i"+img);
          }
          public void Verification(Complex A, Complex B)
        {
              if (A.img == B.img && A.real == B.real) System.Console.WriteLine(A+" равно "+B);
              else System.Console.WriteLine(A+" НЕравно "+B);
        }
          public static Complex operator+(Complex A, Complex B)
          {
              Complex C = new Complex();
              C.img = Convert.ToString(Convert.ToDouble(A.img) + Convert.ToDouble(B.img));
              C.real = Convert.ToString(Convert.ToDouble(A.real) + Convert.ToDouble(B.real));
              return C;
          }
          public static Complex operator *(Complex A, Complex B)
          {
              Complex C = new Complex();
              C.img=Convert.ToString(Convert.ToDouble(A.real)*Convert.ToDouble(B.img)+Convert.ToDouble(A.img)*Convert.ToDouble(B.real));
              C.real=Convert.ToString(Convert.ToDouble(A.real)*Convert.ToDouble(B.real)-Convert.ToDouble(A.img)*Convert.ToDouble(B.img));
              return C;
          }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Complex A = new Complex("-10i4");
            Complex B = new Complex("5i-2");
            Complex C = new Complex();
            Complex D = new Complex();
            C = A + B;
            D = A * B;
            System.Console.WriteLine("A= "+ A);
            System.Console.WriteLine("B= "+ B);
            System.Console.WriteLine("A+B= "+ C);
            System.Console.WriteLine("A*B= "+ D);
            A.Verification(A,B);
            System.Console.ReadLine();
        }
    }
}
Nickolay0512 вне форума Ответить с цитированием
Старый 12.09.2014, 19:36   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Зачем Вам создавать какой-то класс, если можно воспользоваться готовой библиотекой complex.h

Код:
#include<iostream.h>
#include<complex.h>
#include<stdlib>
using namespace std;

int main()
{
  complex<double> Z1 (3, 5);
  complex<double> Z2 (3.1, 4.2);
  double N = 2;
  cout << "Операции с комплексными числами \n\n";
  cout << "Исходные числа Z1 = " << Z1 <<"  Z2 = " << Z2 << "  N = " << N << "\n";
  cout << "\n";
  cout << "Арифметические \n";
  cout << "Сумма           = " << Z1 + Z2 << "\n";
  cout << "Разность        = " << Z1 - Z2 << "\n";
  cout << "Произведение    = " << Z1 * Z2 << "\n";
  cout << "Деление         = " << Z1 / Z2 << "\n";
  cout << "Деление 1/Z     = " << complex<double>(1) / Z2 << "\n";
  cout << "Деление 1/Z^2   = " << complex<double>(1) / pow(Z2,2) << "\n";
  cout << "Деление Z^(1/N) = " << pow(Z2, (complex<double>(1)/N)) << "\n";
  cout << "\n";
  cout << "Трансцендентные функции \n";
  cout << "Модуль                  = " << abs(Z1) << "\n";
  cout << "Квадрат модуля          = " << norm(Z1) << "\n";
  cout << "Возведение в степень    = " << pow(Z1,2) << "\n";
  cout << "Квадратный корень       = " << sqrt(Z1) << "\n";
  cout << "Экспонента              = " << exp(Z1) << "\n";
  cout << "Десятичный логарифм     = " << log10(Z1) << "\n";
  cout << "Натуральный логарифм    = " << log(Z1) << "\n";
  cout << "\n";
  cout << "Тригонометрические \n";
  cout << "Синус                   = " << sin(Z1) << "\n";
  cout << "Синус гиперболический   = " << sinh(Z1) << "\n";
  cout << "Косинус                 = " << cos(Z1) << "\n";
  cout << "Косинус гиперболический = " << cosh(Z1) << "\n";
  cout << "Тангенс                 = " << tan(Z1) << "\n";
  cout << "Тангенс гиперболический = " << tanh(Z1) << "\n";
  cout << "\n";
  cout << "Создание комплексного числа в системе полярных координат\n";
  complex<double> AL(5, 0.75);
  cout << "Исходное число = AL-" << AL << "\n";
  cout << "Амплитуда: 5.0, Фазовый угол: 0.75          = " << polar(AL) << "\n";
  cout << "Число с противоположным знаком мнимой части = " << conj(AL) << "\n";
  cout << "\n";
  system("pause");
  return 0;
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 12.09.2014, 19:54   #3
Nickolay0512
Пользователь
 
Регистрация: 26.10.2013
Сообщений: 54
По умолчанию

Задание такое просто
Nickolay0512 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести в порядке возрастания все целые числа которые находятся между "А" и "В" С++ (визуальный режим) программирование Помощь студентам 5 23.01.2014 02:14
error C2664: PrintArray: невозможно преобразовать параметр 1 из "int **" в "const int **" revizor Помощь студентам 6 07.05.2013 14:07
Создать класс "Фигура", от него наследованием создать 3 класса ("треугольник", "четырехугольник", "окружность") funnyy Помощь студентам 3 17.10.2012 17:40
Помогите!Срочно! "Составьте программу получения в порядке убывания всех делителей данного числа" koston Паскаль, Turbo Pascal, PascalABC.NET 2 26.03.2008 12:34