Вроде бы все правильно, а компилятор пишет "Повторно объявленный идентификатор " Почему он повторно объявленый? Вторая ошибка: Необявленная переменная Power. Насколько мне известно это встроенная ф-ция. Так зачем ее объявлять? Что изменить, чтоб код нормально работал?
uses crt; var x,n:integer;
function F(const x, n: Real): Real; //x - вещественное, n - вещественное var Result: Real; flag: Boolean; begin flag := (x < 0); Result := Exp(n * Ln(Abs(x))); if (flag) then Result := -Result; Power := Result; end;
begin readln(x,n); write('Ответ = ',F(x,n)); end.
OCTAGRAM
10.10.2016 19:13
Выглядит так, будто был код для Turbo Pascal с функцией Power, а потом функцию Power в сигнатуре переименовали в F, забыв поменять имя при возврате результата. В Turbo Pascal не было псевдопеременной Result, вместо этого, чтобы вернуть результат, нужно было присвоит значение псевдопеременной, имя которой совпадает с именем функции, однако в неё можно только писать, а если пытаться читать, компилятор воспринимает это как рекурсивный вызов, и если нужно читать, то создавалась ещё одна переменная, в данном случае Result, а при выходе из функции "Power := Result;" должен был передать значение этой переменной в окончательный результат.
Если совместимость с Turbo Pascal не требуется, нужно убрать строки с объявлением переменной Result и присваиванием "Power := Result;". Если требуется, то заменить Result везде на какое–то другое имя, например, ProtoResult, а в последнем присваивании тогда будет "F := ProtoResult;"
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.