Научитесь сначала читать код, потом возьметесь за критику. Где 3 выхода? Я вижу только один выход из подпрограммы. Перед последним End-ом. Все остальное - не более чем запоминание результата, который функция может вернуть (а может и НЕ вернуть, как повезет).
Кстати, ссылку на "правила структурирования программ" можно получить? (с указанием автора, желательно - не Васи Пупкина)... И заодно объяснение, чем подобная функция нарушает правила структурирования... Иначе - все, что я вижу в этом посте - это поднятие старой темы, причем необоснованное. Если ответа не последует в течении 12 часов - пост №18 будет просто удален. Как и все последующие.
1.Выход из функции все должен находится перед закрывающем операндом.(Примеры: MFC)
2.Любую книгу возьми про стили программирования.
3.Поэтому желательно писать так (если вам конечно не жалко памяти, если жалко памяти пишите на asm'е):
function Root3(e: extended): extended;
integer tmp;
begin
if (e = 0) then
tmp := 0;
else if (e > 0) then
tmp := exp(1/3 * ln(e));
else
tmp := -exp(1/3 * ln(-e));
Root3 := tmp;
end;