Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <stdio.h>
- #include <math.h>
- #include <time.h>
- #include <locale.h>
- #include <windows.h>
- #include <malloc.h>
- typedef struct
- {
- float Re;
- float Im;
- } complex;
- //Операция вычисления модуля комплексного числа
- float modul(complex x)
- {
- return sqrt(x.Re * x.Re + x.Im * x.Im);
- }
- //Операция вычисления аргумента комплексного числа
- float arg(complex x)
- {
- return x.Im / x.Re;
- }
- //Сумма комплексного числа
- complex summ(complex x, complex y)
- {
- complex s;
- s.Re = x.Re + y.Re;
- s.Im = x.Im + y.Im;
- return s;
- }
- //Разность комплексного числа
- complex razn(complex x, complex y)
- {
- complex s;
- s.Re = x.Re - y.Re;
- s.Im = x.Im - y.Im;
- return s;
- }
- // произведение
- complex proiz(complex x, complex y)
- {
- complex s;
- s.Re = x.Re * y.Re - x.Im * y.Im;
- s.Im = x.Re * y.Im + x.Im * y.Re;
- return s;
- }
- //Частного двух комплексных чисел
- complex chast(complex x, complex y)
- {
- complex s;
- s.Re = (x.Re * y.Re + x.Im * y.Im) / (y.Re * y.Re + y.Im * y.Im);
- s.Im = (x.Im * y.Re - y.Im * x.Re) / (y.Re * y.Re + y.Im * y.Im);
- return s;
- }
- //Вывод
- void printC(complex q)
- {
- printf("%.2f+%.2fi\n", q.Re, q.Im);
- }
- // тройкa чисел, произведение которых имеет наибольший модуль
- void max_mod(complex* q, int count) {
- if (count < 3) {
- printf("Недостаточно данных для нахождения наибольшего модуля для трех чисел.\n");
- return;
- }
- float max = 0;
- int namber1 = -1, namber2 = -1, namber3 = -1;
- for (int i = 0; i < count - 2; i++) {
- for (int j = i + 1; j < count - 1; j++) {
- for (int k = j + 1; k < count; k++) {
- if (max < modul(proiz(q[i], proiz(q[j], q[k])))) {
- max = modul(proiz(q[i], proiz(q[j], q[k])));
- namber1 = i; namber2 = j; namber3 = k;
- }
- }
- }
- }
- printf("Список комплексных чисел произведение, которых имеют наибольший модуль:\n");
- printC(q[namber1]); printC(q[namber2]); printC(q[namber3]);
- }
- // модуль и аргумент суммы заданных N комплексных чисел
- void sum_mod_arg(complex* q, int count) {
- complex x; x.Im = q[0].Im; x.Re = q[0].Re;
- for (int i = 1; i < count; i++)
- x = summ(x, q[i]);
- printf("Для суммы заданных комплексных числе, модуль равен %.2f, аргумент равен %.2f\n", modul(x), arg(x));
- }
- void main() {
- SetConsoleCP(1251); SetConsoleOutputCP(1251);
- int N;
- printf("Введите кол-во комплексных чисел: ");
- scanf_s("%i", &N);
- //распределение памяти под массив
- complex* q = (complex*)malloc(N * sizeof(complex));
- // ввод
- for (int i = 0; i < N; i++) {
- printf("Введите Re и Im комплексного числа под номером %d:\n", i);
- scanf_s("%f%f", &q[i].Re, &q[i].Im);
- }
- max_mod(q, N);
- sum_mod_arg(q, N);
- system("pause");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement