/
Messus
/
t_ascii
Обзор
Документация
Войти
/
Messus
/
t_ascii
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
mathcomp.cpp
174 строки
5 KB
Mario
modified
24 мар 2025, 11:18
24 мар 2025, 11:18
b1e4b71
Код
Авторство
О чём код?
#include<iostream> #include<math.h> using namespace std; struct complex_1 { float re; float im; }; struct complex_2 { float modul; float argum; }; //ввод числа в алгебраической форме complex_1 enter_1() { complex_1 temp; cout << "Введите действительную часть числа: \n"; cin >> temp.re; cout << "Введите мнимую часть числа: \n"; cin >> temp.im; return temp; } //ввод числа в тригонометрической форме complex_2 enter_2() { complex_2 temp; cout << "Введите модуль комплексного числа: \n"; cin >> temp.modul; cout << "Введите аргумент числа: \n"; cin >> temp.argum; return temp; } //вывод числа void output(complex_1 number) { cout << number.re; if(number.im >=0) cout << " +" << number.im << " i"<< endl; else cout << " " << number.im << " i" << endl; } //вывод числа void output(complex_2 number) { cout << number.modul << " cos (" << number.argum << ") + i sin (" << number.argum << ")" << endl; } //перевод числа из тригонометрической формы в алгебраическую complex_1 konverter(complex_2 number, bool pr=true) { complex_1 temp; temp.re = number.modul*cos(number.argum); temp.im = number.modul*sin(number.argum); if (pr) output(temp); return temp; } //перевод числа из алгебраической формы в тригонометрическую complex_2 konverter(complex_1 number, bool pr=true) { complex_2 temp; temp.modul = sqrt(number.re * number.re + number.im * number.im); temp.argum = atan(number.im/number.re); if (pr) output(temp); return temp; } //сложение двух чисел в алгебраической форме complex_1 plus1(complex_1 number_1, complex_1 number_2, bool pr=true) { complex_1 temp; temp.re = number_1.re + number_2.re; temp.im = number_1.im + number_2.im; if (pr) output(temp); return temp; } //разность двух чисел в алгебраической форме complex_1 minus1(complex_1 number_1, complex_1 number_2, bool pr=true) { complex_1 temp; temp.re = number_1.re - number_2.re; temp.im = number_1.im - number_2.im; if (pr) output(temp); return temp; } //умножение двух чисел в алгебраической форме complex_1 multi(complex_1 number_1, complex_1 number_2, bool pr=true) { complex_1 temp; temp.re = number_1.re * number_2.re - number_1.im * number_2.im; temp.im = number_1.im * number_2.re + number_1.re * number_2.im; if (pr) output(temp); return temp; } //деление двух чисел в алгебраической форме complex_1 divided(complex_1 number_1, complex_1 number_2, bool pr=true) { complex_1 temp; temp.re = (number_1.re * number_2.re + number_1.im * number_2.im)/ (number_2.re * number_2.re + number_2.im * number_2.im); temp.im = (number_1.im * number_2.re - number_1.re * number_2.im)/ (number_2.re * number_2.re + number_2.im * number_2.im); if (pr) output(temp); return temp; } //возведение числа в степень complex_1 power(complex_1 number_1, int n, bool pr=true) { complex_1 temp; complex_2 temp_2; float p=1; int i=1; temp_2=konverter(number_1, true); for(;i<=n;p*=temp_2.modul, i++) temp.re = p * cos(n*temp_2.argum); temp.im = p * sin(n*temp_2.argum); if (pr) output(temp); return temp; } //извлечение корня из числа void sqrtnum(complex_1 number_1, int n, float *ro, float *fi, bool pr=true) { complex_1 temp; complex_2 temp_2; int i=0; temp_2 = konverter(number_1, true); *ro = pow(temp_2.modul, (float)1/n); *fi = temp_2.argum; if (pr) { for(i=0; i<n; i++) { cout << i << "-е значение корня\n"; temp.re = *ro*cos((*fi+2*M_PI*i)/n); temp.im = *ro*sin((*fi+2*M_PI*i)/n); output(temp); } } } int main() { complex_1 number_1, number_2; complex_1 number_5; complex_2 number_3, number_4; float ro1, fi1; number_1 = enter_1(); number_2 = enter_1(); output(number_1); output(number_2); number_3 = konverter(number_1, true); number_4 = konverter(number_2, true); cout << "Сумма чисел: "; number_5 = plus1(number_1, number_2, true); cout<< endl; cout << "Разность чисел: "; number_5 = minus1(number_1, number_2, true); cout << endl; cout << "Произведение чисел: "; number_5 = multi(number_1, number_2, true); cout << endl; cout << "Частное чисел: "; number_5 = divided(number_1, number_2, true); cout << endl; cout << "Степень числа: "; number_5 = power(number_1, 5, true); cout << endl; cout << "Корень числа: "; sqrtnum(number_1, 5, &ro1, &fi1, true); return 0; }