Рассматривая комплексное число как запись, состоящую из двух вещественных полей, составить функции выполнения четырёх арифметических операций с комплексными числами.
volvo
21.08.2005 17:53
Цитата(eugenek @ 21.08.05 13:49)
Рассматривая комплексное число как запись, состоящую из двух вещественных полей, составить функции выполнения четырёх арифметических операций с комплексными числами.
Ну, так в чем проблема?
Type
Complex = Record
re, im: Double;
End;
{ И реализуй процедуры сложения, вычитания, умножения и деления... }Procedure complexAdd(Var res: Complex; a, b: Complex);
...
Procedure complexSub(Var res: Complex; a, b: Complex);
...
Procedure complexMult(Var res: Complex; a, b: Complex);
...
Procedure complexDiv(Var res: Complex; a, b: Complex);
...
Полностью-то ЗА ТЕБЯ этого делать никто не будет...
eugenek
21.08.2005 23:38
Цитата(volvo @ 21.08.05 13:53)
Ну, так в чем проблема?
Правильно?
Program lab_45;
Type
Complex = Record
re, im: Double;
End;
var
res,a,b,d : Complex;
zero : boolean;
Procedure print(d: Complex);
beginif d.re<>0then write ('(',d.re:5:5) else write ('(0');
if d.im=0then write (')') elsebeginif d.im<0then write(' - ') else write(' + ');
write('j',abs(d.im):5:5,')');
end;
end;
Procedure complexAdd(Var res: Complex; a, b: Complex);
begin
res.re:= a.re + b.re;
res.im:= a.im + b.im;
end;
Procedure complexSub(Var res: Complex; a, b: Complex);
begin
res.re:= a.re - b.re;
res.im:= a.im - b.im;
end;
Procedure complexMult(Var res: Complex; a, b: Complex);
begin
res.re:= (a.re*b.re)-(a.im*b.im);
res.im:= (a.re*b.im)+(a.im*b.re);
end;
Procedure complexDiv(Var res: Complex; a, b: Complex);
beginif ((b.re=0) and (b.im=0)) then zero:=true
elsebegin
res.re:= ((a.re*b.re)+(a.im*b.im))/((b.re*b.re)+(b.im*b.im));
res.im:= ((a.im*b.re)-(a.re*b.im))/((b.re*b.re)+(b.im*b.im));
end;
end;
begin
zero:=false;
writeln('');
write('a.re=');readln(a.re);
write('a.im=');readln(a.im);
writeln('');
write('b.re=');readln(b.re);
write('b.im=');readln(b.im);
writeln('');
complexAdd(res,a,b);
print(a);write(' + ');print(b);write(' = ');print(res);writeln('');
complexSub(res,a,b);
print(a);write(' - ');print(b);write(' = ');print(res);writeln('');
complexMult(res,a,b);
print(a);write(' * ');print(b);write(' = ');print(res);writeln('');
complexDiv(res,a,b);
print(a);write(' / ');print(b);write(' = ');
if zero=false then print(res)else write ('Division by zero');
writeln('');
end.
Guest
22.08.2005 2:45
Нужна "от дурака": при делении надо отслеживать ситуации, когда в знаменателе может получиться ноль.
eugenek
24.08.2005 23:50
Цитата(Guest @ 21.08.05 22:45)
Нужна "от дурака": при делении надо отслеживать ситуации, когда в знаменателе может получиться ноль.
Исправлено! :low:
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.