Форум программистов, компьютерный форум CyberForum.ru

Класс комплексных чисел в показательной форме - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Алгоритм решения олимпиадной задачи http://www.cyberforum.ru/cpp-beginners/thread702531.html
clip2net . com/clip/m121445/1353341115-clip-71kb.jpg Дело в том, что я не знаю, как лучше считать данные. То есть прочитать всю строку, а потом искать там пробел и дробь?-Чтобы узнать, есть ли там целые числа или дробь. Дальше привести найти нок и привести к общему знаменателю, и высчитать результат фигня. Главное считать, помогите
C++ Задачка по C++ 1-й курс, по функциям Задачка: Дано натуральное число n. Среди натуральных чисел 1, 2, 3, ... n найти все те, которые можно представить в виде суммы квадратов двух натуральных чисел. (Определить процедуру , позволяющую распознать полные квадраты). Мы изучаем функции. Прошли статические и динамические массивы, указатели и прочие эелементарности СИ. Помогите плиз решить задачку. http://www.cyberforum.ru/cpp-beginners/thread702523.html
Структура. Не знаю как написать сравнение структурных переменных C++
У магазине есть список автомобилей,что поступили на продажу. Каждая запись этого списка вмещает марку автомобиля и его параметры: стоимость, расход топлива на 100 км, надежность (число лет безотказной роботы), комфортность (отличная, хорошая, удовлетворительная). Покупатель в свою очередь имеет ряд требований по каждому из этих параметров. Эти требования задаются в виде некоторых ...
Метод монте карло для решения СЛАУ C++
не понимаю почему программа идеально работающая для системы 2χ2 не работает для систем 3 его порядка и выше вот код на С++ помогите исправить пожалуйста #include "stdafx.h" #include "stdafx.h" #include <iostream> #include <stdlib.h> #include <time.h>
C++ Значение строки http://www.cyberforum.ru/cpp-beginners/thread702508.html
Подскажите как сделать что бы был ввод строки только большие буквы ? может как то через try / catch ?
C++ Упорядочить строчный массив Помогите пожалуйста с задачей, заранее спасибо! В предложении все слова начинаются с различных букв. Напечатать (если можно) слова предложения в таком порядке, чтобы последняя буква каждого слоза совпадала с первой буквой следующего слова. подробнее

Показать сообщение отдельно
Тапочке
0 / 0 / 0
Регистрация: 15.11.2012
Сообщений: 6
19.11.2012, 20:38     Класс комплексных чисел в показательной форме
Всем доброго времени суток, реализую класс комплексных чисел в показательной форме.
Нужна помощь в проверке математики (особенно abs(), не переборщил ли я с ними?)

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
//---------------------------------------------------//
//-  Класс комплексого числа в символической форме  -//
//---------------------------------------------------//
//-  double A - длина вектора                       -//
//-  double F - угол поворота                       -//
//---------------------------------------------------//
class COMPLEX
{
public:
    double A;
    double F;
    COMPLEX()
    {
        A = 0.0;
        F = 0.0;
    }
    COMPLEX(double fst,double snd)
    {
        A = fst;
        F = snd;
    }
    COMPLEX &operator=(const COMPLEX orig)
    {
        A = orig.A;
        F = orig.F;
    }
    COMPLEX operator*(const COMPLEX &second)const
    {
        COMPLEX result;
        result.A = abs(A * second.A);
        if(result.A == 0) result.F = 0;
        else result.F = F + second.F;
        return result;
    }
    COMPLEX operator/(const COMPLEX &second)const
    {
        COMPLEX result;
        result.A = abs(A / second.A);
        if(result.A == 0) result.F = 0;
        else result.F = F - second.F;
        return result;
    }
    COMPLEX operator+(const COMPLEX &second)const
    {
        COMPLEX result;
        double a = abs(A), b = abs(second.A);
        result.A = sqrt(a*a + b*b + 2*a*b*cos(F-second.F));
        
        if(result.A == 0) result.F = 0; //если вектор равен нулю, обнуляем угол
        else if (F==0 && second.F==0) result.F = 0; //если %операция% два нулевых угла получаем 0
        else
        {
            double x = a*sin(F)+b*sin(second.F);
            double y = a*cos(F)+b*cos(second.F);
            //округление числа для избавления от погрешности вычислений
            x = (double)((int)(x*10000))/10000;
            y = (double)((int)(y*10000))/10000;
            result.F = ArcTan(y,x);
        }  
        return result;
    }
    COMPLEX operator-(const COMPLEX &second)const
    {
        COMPLEX result;
        double a = abs(A), b = abs(second.A);
        result.A = sqrt(a*a + b*b - 2*a*b*cos(F-second.F));
        
        if(result.A == 0) result.F = 0; //если вектор равен нулю, обнуляем угол
        else if (F==0 && second.F==0) result.F = 0; //если %операция% два нулевых угла получаем 0
        else
        {
            double x = a*sin(F)-b*sin(second.F);
            double y = a*cos(F)-b*cos(second.F);
            //округление числа для избавления от погрешности вычислений
            x = (double)((int)(x*10000))/10000;
            y = (double)((int)(y*10000))/10000;
            result.F = ArcTan(y,x);
        }        
        return result;
    }
};
и функция ArcTan

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
double ArcTan(double y, double x)
{
    if (x==0) return M_PI/2;
    else if (y==0) return 0;
    else
    {        
        //определение четверти
        if (x>0 && y>0) return atan(y/x); //1
        else if (x<0 && y>0) return atan(y/x)+M_PI; //2
        else if (x<0 && y<0) return atan(y/x)-M_PI; //3
        else if (x>0 && y<0) return atan(y/x); //4
    }
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru