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

Класс с добавлением функций - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Отсортировать по убыванию элементы последовательности, расположенные после второго отрицательного числа http://www.cyberforum.ru/cpp-beginners/thread1491172.html
2.В произвольной матрице - отсортировать по убыванию элементы последовательности, расположенные после второго отрицательного числа.
C++ Формирование массива из двух других массивов 1.Ввести два целочисленных массива − по 10 элементов в каждом. Сформировать новый массив, на четныхместах которого будут элементы снечетными индексами из первого массива, а нанечетных – с четными индексами из второго. http://www.cyberforum.ru/cpp-beginners/thread1491171.html
Обработка массива C++
Есть задание: Разработать программу, которая формирует массив (границы диапазона задает пользователь) и производит с ним следующие действия: а) выводит четные элемент массива ; б) выводит отрицательные элементы массива; в) выводит произведение элементов массива . Собственно сам код для этого задания, есть пару комментариев но нужно знать что делает каждая строчка кода. Если есть косяк по...
Метод последовательных итераций C++
Решить нелинейное уравнение f(x)=cos(x)-(-x+5) методом последовательных итераций с погрешностью 0.002. Помогите пожалуйста,мне нужен программный код в си++,ну чтоб очень понятный был.
C++ Выбрать пару векторов или массивов, которая даст минимальное скалярное произведение http://www.cyberforum.ru/cpp-beginners/thread1491138.html
Добрый день, подскажите пожалуйста как создать n векторов или массивов, если изначально не известно сколько их будет? Вот условие задания: Даны p различных векторов одинаковой размерности. Написать программу, которая находит ту пару векторов из заданного набора, которая обладает минимальным скалярным произведением.
C++ Как правильно пользоваться openssl RSA_verify? Приветствую всех на форуме. Появилась задача подписать короткое сообщение и затем проверять его с помощью публичного ключа. Пытаюсь разобраться как это все работает. Генерация ключей вроде работает правильно, а вот подписать и проверить не как не выходит exeшник крешится :cry: #include <openssl/rsa.h> #include <openssl/pem.h> #include <openssl/sha.h> #include <openssl/err.h> #include... подробнее

Показать сообщение отдельно
Nick Alte
Эксперт С++
1590 / 982 / 115
Регистрация: 27.09.2009
Сообщений: 1,897
Завершенные тесты: 1
01.07.2015, 18:50     Класс с добавлением функций
В такой постановке задача начинает выглядеть уже по-другому. Начнём с того, что с точки зрения хорошего дизайна, координатная система не будет являться объектом. Объектом будут координаты. Можно определить типы для разных видов координат и преобразования между ними. Например, так:
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
class DescartesLeft { // Левосторонние декартовы координаты
public:
    DescartesLeft(double X, double Y, double Z): x(X), y(Y), z(Z) {} // Задание напрямую
    double x, y, z;  // Данные надо бы прятать в private, но тут можно и так
};
 
class DescartesRight {  // Правосторонние декартовы координаты
public:
    DescartesRight(double X, double Y, double Z): x(X), y(Y), z(Z) {}  // Задание напрямую
    DescartesRight(const DescartesLeft& dl): x(dl.x), y(dl.y), z(-dl.z) {}  // Преобразуем из левосторонних координат, меняя знак по оси Z
    operator DescartesLeft() const {return DescartesLeft(x, y, -z);}  // Преобразование в левосторонние координаты
    double x, y, z;
};
 
class Sperical {// Сферические координаты
public:
    Spherical(double Phi, double Lambda, double R): phi(Phi), lambda(Lambda), r(R) {}  // Задание напрямую
    Spherical(const DescartesLeft& dl);  // преобразование из левосторонних декартовых, математику опускаю
    Spherical(const DescartesRight& dr);  // в C++11 можно преобразовать аргумент в DescartesLeft и перекинуть в предыдущий конструктор
    operator DescartesLeft() const  // Преобразование в левосторонние декартовы
    {   // Реализуем хотя бы это преобразование, для примера
        return DescartesLeft(
            r * cos(phi) * cos(lambda),
            r * sin(phi),
            r * cos(phi) * sin(lambda)
        );
    }
    operator DescartesRight() const;  // Преобразование в правосторонние декартовы
    double phi, lambda, r;  // широта, долгота, расстояние
};
 
// Использование
void foo(const DescartesLeft& coords);
 
void bar()
{
    DescartesLeft dl(1, 2, 3);
    foo(dl);  // Используем значение напрямую
    Spherical s(0.7, 3.14, 42);
    foo(s);  // Из сферических координат создаются левосторонние декартовы и перекидываются в foo
    DescartesRight dr = s;  // И так можно
}
 
Текущее время: 14:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru