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

Функция возведения в степень - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нестандартная запись if http://www.cyberforum.ru/cpp-beginners/thread701517.html
Вечер добрый всем. Вспоминал как работать с указателями и нарвался на вот такой вот образец if if((Rprev=*r+(r==RST?0:*s-Rprev))>0) стандартно идет if(условие) и так далее, но здесь мы присваиваем , приравниваем да и еще ?0: можете объяснить почему все так зверски записано и что значит "?0:" ?
C++ Программирование ООП=)Друзья .просмотрите код! IDE-C++bUIDER И так друзья пытаюсь све старое консольное приложение переделпть в оконное, но увы ничего не выходит, читал что там какие то работа с МЭМО используется.....на форме есть BitButton1 & StringGrid1.....Надо привязать код моей программы для формы..кто знает подскажите пожалуйста..очень нуждаюсь!!! #include <iostream> #include <iomanip> using namespace std; int main () { ... http://www.cyberforum.ru/cpp-beginners/thread701515.html
Ошибки выдаёт ( не пойму причину, что не так? C++
#include "stdafx.h" #include <iostream> #include <conio.h> #include <math.h> using namespace std; int Area(float a, float b, float h); int Area(float a_m, float a_sm, float b_m, float b_sm, float h_m, float h_sm); int Area(float a, float b, float h)//перегруженная функция 1 {
Все элементы нечетных столбцов — нулевые C++
Для разряженной матрицы целых чисел создать модуль доступа к ней, у котором обеспечить экономию памяти при размещении данных. Помогите Написать!!!!!
C++ Составной ключ для std::map http://www.cyberforum.ru/cpp-beginners/thread701476.html
Есть класс. Нужно его сделать ключем для карты. class Vertex{ public: double X,Y,Z; Vertex(double x=0,double y=0, double z=0){X=x;Y=y;Z=z;} void Set(double x,double y,double z){X=x;Y=y;Z=z;} void print(){printf("X=%f, Y=%f, Z=%f\n",X,Y,Z);} double L(){return Sqrt((X*X)+(Y*Y)+(Z*Z));} double L(Vertex A){return Sqrt((X*X-2*X*A.X+A.X*A.X)+(Y*Y-2*Y*A.Y+A.Y*A.Y)+(Z*Z-2*Z*A.Z+A.Z*A.Z));}...
C++ Классы: как из статического метода обратиться к статической переменной класса Классы: как из статического метода обратиться к статической переменной класса подробнее

Показать сообщение отдельно
OasisKharkov
1 / 1 / 0
Регистрация: 28.07.2012
Сообщений: 35
18.11.2012, 21:01     Функция возведения в степень
Добрый день.
Ребята, помогите решить проблему.
Написал функцию для вычисления действительных корней кубического уравнения.
возникает непонятная ситуация в случае, когда дискриминант D > 0.
При извлечении корня третей степени, для нахождения коэффициентов, функция pow() в случае, когда основание
отрицательно, выдает какое-то левое число... ведь вроде и в основании и в показателе степени может содержаться любое число, как положительное, так и отрицательное, лишь бы оно было формата double:
double pow (double x, double y).

Вот код:
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
void qubic(void){
    double a, b, c, d;
    double r, s, t;
    double p, q, D;
    double ro, fi;
    double u, v;
    double x1, x2, x3;
    const double pi = 3.14159265;
    const double pw = 0.33333333;
 
    cout << "Введите коэффициент a: ";
    cin >> a;
    cout << "Введите коэффициент b: ";
    cin >> b;
    cout << "Введите коэффициент c: ";
    cin >> c;
    cout << "Введите коэффициент d: ";
    cin >> d;
    cout << "\n";
    
    r = b/a;
    s = c/a;
    t = d/a;
 
    p = s - r*r/3;
    q = 2*pow(r,3)/27 - r*s/3 + t;
    D = pow((p/3),3) + pow((q/2),2);
    cout << D << "\n";
    cout << p << "\n";
    cout << q << "\n";
    cout << r << "\n";
    if (D<0){
        ro = sqrt(-pow(p,3)/27);
        fi = acos(-q/(2*p));
        
        x1 = 2*pow(ro,pw)*cos(fi/3) - r/3;
        x2 = 2*pow(ro,pw)*cos(fi/3 + 2*pi/3) - r/3;
        x3 = 2*pow(ro,pw)*cos(fi/3 + 4*pi/3) - r/3;
 
        cout << "Корни уравнения: " << x1 << ", " << x2 << " и " << x3 << "\n";
    }
    else{
        u = pow(-q/2+sqrt(D),pw);
        cout << u << "\n";
        v = pow(-q/2-sqrt(D),pw);
        cout << v << "\n";
        
        cout << pow (-10.0, 0.3);       
        x1 = u + v - r/3;
 
        cout << "Корень уравнения: " << x1 << "\n";
    }
    return;
}
Собственно, я даже строку указал
C++
1
cout << pow (-10.0, 0.3);
- которая тоже каракули выдает, неужели основание должно быть строго положительно?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 07:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru