Найти значение комплексной функции - Free Pascal
Формулировка задачи:
1. Найти значение переменной
Необходимо создать: несколько подпрограмм, которые позволяют складывать, вычитать, умножать и делить комплексные числа; функции, возвращающие аргумент и модуль комплексного числа; процедуры, позволяющие ввести комплексное число с клавиатуры и вывести его на экран. Также потребуется описать пользовательский тип TComplex (запись).
Решение задачи: «Найти значение комплексной функции»
textual
Листинг программы
uses
ucomplex;
// Ввод оставил без изменений
procedure readlnc(t: string; var a: complex);
var s, n: string;
are, aim: real;
i, err: integer;
begin
repeat
err := 0;
write(t);
readln(s);
while pos(' ', s) > 0 do delete(s, pos(' ', s), 1);
i := pos('i', s);
if i = 0
then s := s + '+i0'
else if i = 1
then s := '0+' + s
else if i = 2
then s := '0' + s;
i := pos('i', s);
if not(s[i - 1] in ['+', '-'])
then err := 1
else begin
n := copy(s, 1, i - 2);
delete(s, 1, i - 2);
delete(s, 2, 1);
val(n, are, err);
if err = 0 then val(s, aim, err)
end;
if err > 0 then writeln('Input error, reenter.')
until err = 0;
a.re := are;
a.im := aim
end;
var
x, y: complex;
begin
readlnc('x = ', x);
readlnc('y = ', y);
writeln('x = ', cstr(x, 6, 3));
writeln('x = ', cstr(y, 6, 3));
if cmod(x) > cmod(y) then
begin
if cmod(x * y) = 0 then writeln('undefined')
else writeln('z = ', cstr((x + y) / (x * y), 6, 3))
end
else
begin
if cmod(y) = 0 then writeln('undefined')
else writeln('z = ', cstr((y - x) / y, 6, 3));
end;
write('Press <Enter> to exit');
readln
end.