Комплексные числа
Структуры можно использовать для реализации данных сложного типа. В качестве примера можно привести комплексные числа. Сразу заметим, что именно в этом случае использование структур не является оптимальным подходом - гораздо более эффективным представляется использование классов, к тому же в С++ есть специальный библиотечный класс для работы с комплексными числами.
Напомним, что любое комплексное число z может быть представлено в виде \(z=x+i\cdot y\) где действительное число x называется действительной частью числа, действительное число y называется мнимой частью комплексного числа, а мнимая единица \(i^{2}=-1\). Приведенное представление комплексного числа называется алгебраическим. Существует также тригонометрическая форма представления комплексного числа. приведен пример программного кода, в котором для работы с комплексными числами создается специальная структура, а также функция для вычисления результата сложения двух комплексных чисел и перевода комплексного числа из тригонометрической формы в алгебраическую.
Напомним, что любое комплексное число z может быть представлено в виде \(z=x+i\cdot y\) где действительное число x называется действительной частью числа, действительное число y называется мнимой частью комплексного числа, а мнимая единица \(i^{2}=-1\). Приведенное представление комплексного числа называется алгебраическим. Существует также тригонометрическая форма представления комплексного числа. приведен пример программного кода, в котором для работы с комплексными числами создается специальная структура, а также функция для вычисления результата сложения двух комплексных чисел и перевода комплексного числа из тригонометрической формы в алгебраическую.
#include#include using namespace std; //Алгебраическая форма комплексного числа: struct ComplAlg{ double Re; double Im; }; //Тригонометрическая форма комплексного числа: struct ComplTrig{ double r; double phi; }; //Сумма комплексных чисел (алгебраическая форма): ComplAlg sum(ComplAlg z1,ComplAlg z2){ ComplAlg z; z.Re=z1.Re+z2.Re; z.Im=z1.Im+z2.Im; return z; } //Перевод из тригонометрической в алгебраическую форму: ComplAlg TrigToAlg(ComplTrig z){ ComplAlg tmp; tmp.Re=z.r*cos(z.phi); tmp.Im=z.r*sin(z.phi); return tmp;} //Отображение числа (алгебраическая форма): void show(ComplAlg z){ cout << z.Re; if(z.Im >= 0) cout << " + " << z.Im << "i\n"; else cout << " - " << -z.Im << "i\n"; } int main(){ const double pi=3.1415; ComplAlg A,B,C; ComplTrig D; A.Re=1; A.Im=-1; B.Re=4; B.Im=5; D.r=2; D.phi=pi/6; C=TrigToAlg(D); show(A); show(B); show(C); C=sum(A,B); show(C); return 0;}