Функции с комплексными числами
Три сценария работы с компл в пользовательских функциях: передача по значению, возврат значения и возврат через рез-аргумент.
Разбор
1. Передача компл в функцию
алг вещ getReal(компл z)
нач
знач := Re(z)
кон
Параметр компл z передаётся по значению. Внутри доступны Re(z) и Im(z).
2. Возврат компл из функции
алг компл fromReal(вещ x)
нач
компл result
result := x | каст вещ → компл
знач := result
кон
знач := result возвращает значение типа компл — Re = x, Im = 0.
3. Возврат через рез компл
алг makeComplex(вещ re, вещ im, рез компл result)
нач
компл tmp
tmp := re
result := tmp
кон
рез компл result — выходной аргумент. Caller передаёт переменную, функция пишет в неё результат.
Полная программа
использовать Комплексные числа
алг вещ getReal(компл z)
нач
знач := Re(z)
кон
алг вещ getImag(компл z)
нач
знач := Im(z)
кон
алг компл fromReal(вещ x)
нач
компл result
result := x
знач := result
кон
алг realAndImag(компл z, рез вещ re, рез вещ im)
нач
re := Re(z)
im := Im(z)
кон
алг makeComplex(вещ re, вещ im, рез компл result)
нач
компл tmp
tmp := re
result := tmp
кон
алг
нач
компл a
вещ x, re, im
x := 2.5
a := x
вывод "Re(a) = ", getReal(a), нс
вывод "Im(a) = ", getImag(a), нс
компл b
b := fromReal(3.0)
вывод "Re(fromReal(3.0)) = ", Re(b), нс
вывод "Im(fromReal(3.0)) = ", Im(b), нс
realAndImag(a, re, im)
вывод "decompose Re = ", re, нс
вывод "decompose Im = ", im, нс
компл c
makeComplex(5.0, 6.0, c)
вывод "рез компл Re = ", Re(c), нс
вывод "рез компл Im = ", Im(c), нс
кон