Комплексные числа: основные мат. действие на C(Си)
| Май 16th, 2010Другу дали задание написать простенькую программку на любом языке программирования, которая будет делать основные математические действия с комплексными числами (сложение, вычитание, умножение и деление двух чисел), т.к. ему немного было лень писать, то попросил меня, благо делов 5 минут.
Для этого создадим первый файл (complex.h) который будет содержать объявления нового типа данных и его структуру.
1 2 3 4 | typedef struct { double a,b; } complex_t; |
Вот такой вот простенький хидер.
Теперь создадим основной файл и назовем его complex.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 43 44 45 46 47 48 49 50 51 52 53 54 55 | #include <stdio.h> #include "complex.h" // заголовочный файл для работы с к.ч complex_t add(complex_t x, complex_t y) // ф-ция сложения к.ч. { complex_t t; t.a = x.a + y.a; t.b = x.b + y.b; return t; } complex_t sub(complex_t x, complex_t y) // ф-ция вычитания к.ч. { complex_t t; t.a = x.a - y.a; t.b = x.b - y.b; return t; } complex_t mul(complex_t x, complex_t y) // ф-ция умножения к.ч. { complex_t t; t.a = x.a * y.a - x.b * y.b; t.b = x.a * y.b + x.b * y.a; return t; } complex_t div(complex_t x, complex_t y) // ф-ция деления к.ч. { complex_t t; t.a = (x.a * y.a + x.b * y.b)/(y.a*y.a+y.b*y.b); t.b = (x.a * y.b - x.b * y.a)/(y.a*y.a+y.b*y.b); return t; } int main() { double a1,b1,a2,b2; printf ("Введите 4 числа: \n"); while(scanf ("%lf%lf%lf%lf", &a1,&b1,&a2,&b2) == 4) { complex_t x = {a1,b1}; // первое к.ч. complex_t y = {a2,b2}; // второе к.ч. complex_t a = add(x,y); // сумма к.ч. complex_t s = sub(x,y); // вычитание к.ч. complex_t m = mul(x,y); // умножение к.ч. complex_t d = div(x,y); // деление к.ч. printf ("a = (%5.2lf, %5.2lfi)\n", a.a, a.b ); // результат суммирования printf ("s = (%5.2lf, %5.2lfi)\n", s.a, s.b ); // результат вычитания printf ("m = (%5.2lf, %5.2lfi)\n", m.a, m.b ); // результат умножения printf ("d = (%5.2lf, %5.2lfi)\n", d.a, d.b ); // результат деления return 0; } return 0; } |
Код простой, но может пригодиться какому-то ленивому студенту-заочнику, потому что на дневном такое должны знать как моряк азбуку Морзе
.
Удачи в программирование.
