Компьютерный форум

Компьютерный форум (http://www.hardforum.ru/)
-   C++ на Unix (http://www.hardforum.ru/f162/)
-   -   Изучаю классы на С++ на Linux (http://www.hardforum.ru/t103808/)

ostap_bender 16.10.2012 16:41

Изучаю классы на С++ на Linux
 
Доброго времени суток!
Начал изучать недавно программирование.
Суть ООП понятна. В Delphi я разобрался.
Теперь начал изучать С++ на Linux

Прошу помощи в решении задачки:
Нужна программка, использующую класс, где объектом выступает – комплексное число, а метод – возведение его в степень.

Не могу никак осилить элементарщину.
Помогите, пожалуйста!

ostap_bender 16.10.2012 16:42

Глупые попытки:

cpp Код:
#include <math.h>
#include <complex.h>
#include <iostream.h>
//////////////////////////////////////////////////////////////////////////////////////
typedef double                T_real;
typedef std::complex<T_real>  T_compl;
//////////////////////////////////////////////////////////////////////////////////////
T_compl  pow_z_p
    (
        T_real  z_real,
        T_real  z_imag,
        T_real  p
    )
{
    T_real  z_p_real = 0;
    T_real  z_p_imag = 0;
    if(z_real || z_imag)
    {
        //Пронормируем заданное комплексное число.
        T_real  norm     = sqrt(z_real * z_real + z_imag * z_imag);
        T_real  cos_phi  = z_real / norm;        
        T_real  phi      = acos(cos_phi);    
 
        //Представим заданное комплексное число
        //z == z_real + i * z_imag
        //в виде
        //z == norm * (cos(phi) + i * sin(phi)).
        //Возводя это число в степень p по формуле Муавра, получим:
        //z^p = norm^p * (cos(p * phi) + i * sin(p * phi)),
        //откуда
        T_real  norm_p  = pow(norm, p);
        z_p_real        = norm_p * cos(p * phi);
        z_p_imag        = norm_p * sin(p * phi);      
    }
    return T_compl(z_p_real, z_p_imag);    
}
//////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    std::cout << "Введите комплексное число z: "
              << std::endl
              << '\t'
              << "z.real = ";
 
    T_real  z_real;
    std::cin >> z_real;
 
    std::cout << '\t'
              << "z.imag = ";
 
    T_real  z_imag;
    std::cin >> z_imag;
 
    std::cout << "Введите вещественный показатель степени: ";
    T_real p = 0;
    std::cin >> p;
 
    std::cout << std::endl
              << "Комплексное число "
              << T_compl(z_real, z_imag)
              << " в степени "
              << p
              << " равно "
              << std::endl
              << pow_z_p(z_real, z_imag, p)
              << std::endl
              << std::endl
              << "Тот же результат, полученный через библиотечную функцию: "
              << std::endl
              << std::pow(T_compl(z_real, z_imag), p)
              << std::endl
              << std::endl;    
}

StudDraw2017 23.11.2017 19:42

Не знаю шаблоны, но кажется, вы не туда пошли.
Если у вас задание создать класс комплексных чисел, то надо дать описание типа подобное записям и содержащее две переменные для хранения собственно числа.
Далее, следует описать методы (функции класса) для реализации операций сложения и умножения.

Всё это можно усложнить до перегрузки присваивания и арифметических операций, но использовать STL, думаю, не следует.

Alexiski 23.11.2017 20:29

Цитата:

Сообщение от StudDraw2017 (Сообщение 858127)
Не знаю шаблоны, но кажется

Мне кажется, Вы заняты некрофлудом и набивкой постов.
Хотите в бан?

StudDraw2017 23.11.2017 20:46

Обычно, на первой странице списка темы нестарые. Ваш форум слишком раздроблен для текущей активности, а время последнего сообщения в треде далеко от названия темы, указано уменьшенным шрифтом и не по стандарту. В результате, просто не обращаешь внимание на дату.

Вместо запугивания баном и так редких юзеров, сделайте вывод предупреждения с датой при попытке отправить сообщение в старый тред, и некропостинг сократится.

Alexiski 23.11.2017 21:49

Посмотреть на дату религия не позволяет?

Rius 24.11.2017 11:25

Цитата:

Сообщение от StudDraw2017 (Сообщение 858134)
Вместо запугивания баном и так редких юзеров, сделайте вывод предупреждения с датой при попытке отправить сообщение в старый тред, и некропостинг сократится.

Вы не редкий юзер, а спамер, рекламирующий повсюду какую-то там контору по решению задач за лоботрясов. Чтобы увидеть это, достаточно погуглить по нику посты за последние пару месяцев.


Часовой пояс GMT +4, время: 23:56.

Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.