Программа сложения и умножения комплексных чисел

Используя записи, написать программу сложения и умножения двух комплексных чисел.

Комплексные числа состоят из действительной и мнимой частей, обе являются вещественными числами. Например, 1.5+0.3i. Здесь 1.5 — действительная часть, 0.3 — мнимая часть, i — так называемая мнимая единица. Части комплексных чисел могут быть отрицательными величинами. Например, -3+1.5i, 2-2i, -10.5-1.25i.

Если даны комплексные числа a и b, где их действительные части обозначены как a.x и b.x, а мнимые — как a.y и b.y, то их сумма и произведение находятся по формулам:
a + b = (a.x + b.x) + (a.y + b.y)i
a * b = (a.x * b.x — a.y * b.y) + (a.x * b.y + a.y * b.x)i

В задаче используется структура данных (запись), представляющая комплексное число. Структура содержит два поля для хранения действительной и мнимой части. Для каждого комплексного числа используется переменная типа объявленной структуры.

Pascal


type
complex = record
x: real;
y: real;
end;

var
a,b,sum,mult: complex;

begin
writeln('Число A');
write(' действ. часть: '); readln(a.x);
write(' мнимая часть: '); readln(a.y);
writeln('Число B');
write(' действ. часть: '); readln(b.x);
write(' мнимая часть: '); readln(b.y);

sum.x := a.x + b.x;
sum.y := a.y + b.y;
mult.x := a.x * b.x - a.y * b.y;
mult.y := a.y * b.x + a.x * b.y;
writeln('Сумма: ', sum.x:2:2, '+',sum.y:2:2,'j');
writeln('Произв.: ', mult.x:2:2, '+',mult.y:2:2,'j');
end.
Язык Си


#include < stdio.h>
struct complex {float x, y;};
main() {
struct complex a, b, sum, mult;
printf("Число A\n");
printf(" действ. часть: "); scanf("%f",&a.x);
printf(" мнимая часть: "); scanf("%f",&a.y);
printf("Число B\n");
printf(" действ. часть: "); scanf("%f",&b.x);
printf(" мнимая часть: "); scanf("%f",&b.y);

sum.x = a.x + b.x;
sum.y = a.y + b.y;
mult.x = a.x * b.x - a.y * b.y;
mult.y = a.y * b.x + a.x * b.y;
printf("Сумма: %.2f+%.2fj\n", sum.x,sum.y);
printf("Произв.: %.2f+%.2fj\n", mult.x,mult.y);
}



Число A
действ. часть: -1.24
мнимая часть: 0.5
Число B
действ. часть: 2.1
мнимая часть: -0.1
Сумма: 0.86+0.40j
Произв.: -2.55+1.17j
Python


# Вариант 1. Использование встроенного типа данных complex:

a = input()
b = input()
a = complex(a)
b = complex(b)
suma = a + b
mult = a * b
print(suma)
print(mult)

# Вариант 2. Определение собственного класса и перегрузка операторов:

class Cmplx:
def __init__(self, x, y):
self.x = x
self.y = y
def __add__(self, obj):
self.sumax = self.x + obj.x
self.sumay = self.y + obj.y
def __mul__(self, obj):
self.multx = self.x * obj.x - self.y * obj.y
self.multy = self.y * obj.x + self.x * obj.y

x = float(input())
y = float(input())
a = Cmplx(x,y)
x = float(input())
y = float(input())
b = Cmplx(x,y)
a + b
a * b
print('Сумма: %.2f+%.2fj' % (a.sumax, a.sumay))
print('Произв.: %.2f+%.2fj' % (a.multx, a.multy))

# Вариант 3. Использование словарей:

a = {'x':0, 'y':0}
b = {'x':0, 'y':0}
a['x'] = float(input())
a['y'] = float(input())
b['x'] = float(input())
b['y'] = float(input())
suma = {}
mult = {}
suma['x'] = a['x'] + b['x']
suma['y'] = a['y'] + b['y']
mult['x'] = a['x'] * b['x'] - a['y'] * b['y']
mult['y'] = a['y'] * b['x'] + a['x'] * b['y']
print('Сумма: %.2f+%.2fj' % (suma['x'], suma['y']))
print('Произв.: %.2f+%.2fj' % (mult['x'], mult['y']))

В Python есть встроенный тип данных комплексные числа, который поддерживает операции сложения и умножения.

Однако можно определить свой тип данных, используя классы. В них также можно использовать перегрузку операторов, т.е в данном случае переопределить операции сложения и умножения для своего типа данных.

Также можно использовать словари с двумя ключами - действительной и мнимой частью комплексного числа.

Оцените статью
Добавить комментарий