• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Помогите написать программу. Delphi

akaOpossum

Ученик
Регистрация
23 Дек 2014
Сообщения
2
Реакции
0
Баллы
0
Помогите написать программу. Delphi

Описать рекурсивную функцию, которая по заданным вещественному х и целому n вычисляет величину х в степени n, согласно формуле Снимок.webp
Вот мой код:

function st (x,n: real): extended;
begin
if (n=0) then x:=1
else if (n<0) then x:= 1/Power(x,ABS(n))
else if (n>0) then x:= x*( Power(x,n-1));
end;

procedure TForm1.Button1Click(Sender: TObject);
var F,a,b:extended;
begin
a:=StrToFloat(edit1.text);
b:=StrToFloat(edit2.text);
F:=st(a,b) ;
showmessage(Результат = ' + FloatToStr(F));
end;

end.
При вычисление просто возникает ошибка.
 
function st (x,n: real): extended;
begin
if (n=0) then result:=1;
if (n<0) then result:= 1/Power(x,ABS(n));
if (n>0) then result:= x*( Power(x,n-1));
end;
 
Последнее редактирование:
Код:
function st (x,n: real): extended; 
 begin 
  if (n=0) then x:=1 else 
  if (n<0) then x:= 1/Power(x,ABS(n)) else 
  if (n>0) then x:= x*( Power(x,n-1)); 
 end;
Код:
function st (x,n: real): extended; 
 begin 
  if (n=0) then result:=1; 
  if (n<0) then result:= 1/Power(x,ABS(n)); 
  if (n>0) then result:= x*( Power(x,n-1)); 
 end;
Да, господа программисты... И там, и там - чушь. Причем по многим статьям - чушь.
1. Где вы там видите рекурсию? Я лично не вижу таковой в упор. Напомню, что рекурсивной называется функция, содержащая в своём теле вызов самой себя.
2. Даже если "отбросить" требование о том, что функция должна быть рекурсивной, то и в этом случае - чушь.
3. Прежде всего, речь идет о возведении в целую степень. Почему? Да потому, что иначе задачу решает стандартная функция Power, и нечего огород городить. А значит, заголовок должен быть таким:
Код:
function st (x: real; n:Integer): extended;
4. А раз так, то функция Power не должна употребляться вовсе!
5. Итогом описания любой Паскалевской либо Дельфийской функции должно быть присвоение переменной, идентификатор которой совпадает с именем функции, некоего значения. Где это у вас - и у одного, и у другого?
В общем - не-пой-дет!!!
А как правильно, спросите вы?
А так:
Код:
function St(x:real; n:Integer): extended;
 begin
  if (n=0) then St:=1 else
  if (n<0) then St:=(1/x)*St(x,n+1) else
  St:=x*St(x,n-1);
 end;
 
А, стесняюсь спросить, вы каждый раз бросаетесь вот так анализировать коды и задания студентов и выкладывать им готовые решения?
Вопрос был - вылетает с ошибкой.
Эта ошибка устранена в моем куске кода.

А вот разбираться с чужими функциями/идентификаторами и прочим - это, наверное, у вас времени навалом.

Поэтому не критикуйте сильно.
Потому что мне-то на эту критику пофигу, а вопрошавшиЕ, как показывает практика, и на "спасибо" не всегда расщедрятся.
 
А, стесняюсь спросить, вы каждый раз бросаетесь вот так анализировать коды и задания студентов и выкладывать им готовые решения?
Нет. Каждый раз - индивидуально подхожу.
Вопрос был - вылетает с ошибкой. Эта ошибка устранена в моем куске кода.
Только беда в том, что код - неработоспособный.
Просто я, прежде чем выложить что-либо на форум, обязательно тестирую и отлаживаю. К чему и других призываю.
А вот разбираться с чужими функциями/идентификаторами и прочим - это, наверное, у вас времени навалом.
Нет. Времени мало. Но уж, как говорится, "взялся за гуж...". Стараюсь, по возможности, помочь, кому смогу.
Поэтому не критикуйте сильно.
Нет-нет, и в мыслях не было. Уж извините, если зацепил ненароком.
а вопрошавшиЕ, как показывает практика, и на "спасибо" не всегда расщедрятся
Вот уж что да, то да.
 
Премного благодарен)
 
Назад
Сверху