Помощь - Поиск - Пользователи - Календарь
Полная версия: Что тут за ошибка?
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
RabbitRabbit
Вроде бы все правильно, а компилятор пишет "Повторно объявленный идентификатор "
Почему он повторно объявленый? Вторая ошибка: Необявленная переменная 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
Выглядит так, будто был код для Turbo Pascal с функцией Power, а потом функцию Power в сигнатуре переименовали в F, забыв поменять имя при возврате результата. В Turbo Pascal не было псевдопеременной Result, вместо этого, чтобы вернуть результат, нужно было присвоит значение псевдопеременной, имя которой совпадает с именем функции, однако в неё можно только писать, а если пытаться читать, компилятор воспринимает это как рекурсивный вызов, и если нужно читать, то создавалась ещё одна переменная, в данном случае Result, а при выходе из функции "Power := Result;" должен был передать значение этой переменной в окончательный результат.

Если совместимость с Turbo Pascal не требуется, нужно убрать строки с объявлением переменной Result и присваиванием "Power := Result;". Если требуется, то заменить Result везде на какое–то другое имя, например, ProtoResult, а в последнем присваивании тогда будет "F := ProtoResult;"
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.