Технический форум
Вернуться   Технический форум > Программирование > Форум программистов > Delphi, Kylix and Pascal


Ответ
 
Опции темы Опции просмотра
Старый 23.12.2014, 01:25   #1 (permalink)
akaOpossum
Новичок
 
Регистрация: 23.12.2014
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию Помогите написать программу. Delphi

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

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.
При вычисление просто возникает ошибка.
akaOpossum вне форума   Ответить с цитированием

Старый 23.12.2014, 01:25
Helpmaster
Member
 
Аватар для Helpmaster
 
Регистрация: 08.03.2016
Сообщений: 0

Посмотрите обсуждаемые темы, пока вам дают ответы

Помогите пожалуйста написать Программу в Delphi
Помогите написать программу на Delphi

Старый 23.12.2014, 03:32   #2 (permalink)
ALS
Member
 
Аватар для ALS
 
Регистрация: 16.03.2011
Адрес: Севастополь
Сообщений: 679
Сказал(а) спасибо: 97
Поблагодарили 129 раз(а) в 9 сообщениях
Репутация: 22123
По умолчанию

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;

Последний раз редактировалось ALS; 23.12.2014 в 03:39
ALS вне форума   Ответить с цитированием
Старый 23.12.2014, 10:39   #3 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

Цитата:
Сообщение от akaOpossum Посмотреть сообщение
Код:
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;
Цитата:
Сообщение от ALS Посмотреть сообщение
Код:
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;
Vladimir_S вне форума   Ответить с цитированием
Старый 23.12.2014, 12:44   #4 (permalink)
ALS
Member
 
Аватар для ALS
 
Регистрация: 16.03.2011
Адрес: Севастополь
Сообщений: 679
Сказал(а) спасибо: 97
Поблагодарили 129 раз(а) в 9 сообщениях
Репутация: 22123
По умолчанию

А, стесняюсь спросить, вы каждый раз бросаетесь вот так анализировать коды и задания студентов и выкладывать им готовые решения?
Вопрос был - вылетает с ошибкой.
Эта ошибка устранена в моем куске кода.

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

Поэтому не критикуйте сильно.
Потому что мне-то на эту критику пофигу, а вопрошавшиЕ, как показывает практика, и на "спасибо" не всегда расщедрятся.
ALS вне форума   Ответить с цитированием
Старый 23.12.2014, 12:56   #5 (permalink)
Vladimir_S
Специалист
 
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
По умолчанию

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

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Старый 23.12.2014, 23:48   #6 (permalink)
akaOpossum
Новичок
 
Регистрация: 23.12.2014
Сообщений: 2
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
По умолчанию

Премного благодарен)
akaOpossum вне форума   Ответить с цитированием
Ads

Яндекс

Member
 
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.




Часовой пояс GMT +4, время: 13:05.

Powered by vBulletin® Version 6.2.5.
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.