Задача - Программа сложения и умножения комплексных чисел - программирование на разных языках

Задача — Программа сложения и умножения комплексных чисел — программирование на разных языках

Задачи по программированию с решением для школьников
Want create site? Find Free WordPress Themes and plugins.

Задача — Программа сложения и умножения комплексных чисел
— программирование на Pascal, Си, Кумир, Basic-256, Python

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

Комплексные числа состоят из действительной и мнимой частей, обе являются вещественными числами. Например, 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(«Число An»);
printf(»   действ. часть: «); scanf(«%f»,&a.x);
printf(»   мнимая  часть: «); scanf(«%f»,&a.y);
printf(«Число Bn»);
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+%.2fjn», sum.x,sum.y);
printf(«Произв.: %.2f+%.2fjn», 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 есть встроенный тип данных комплексные числа, который поддерживает операции сложения и умножения.

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

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

Did you find apk for android? You can find new Free Android Games and apps.

Добавить комментарий