📖 Документация Qumir

← Вернуться в Playground

← Все примеры

Функции с комплексными числами

Три сценария работы с компл в пользовательских функциях: передача по значению, возврат значения и возврат через рез-аргумент.

Разбор

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), нс
кон

▶ Запустить пример