Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
1

Деление на ноль

06.04.2015, 00:33. Просмотров 537. Ответов 11
Метки нет (Все метки)

Доборго времени суток, форумчане!
Помогите, пожалуйста, с заданием такого плана (в VCL Forms Application):
Задано натуральное n. Создать программу для вычисления формулы с помощью рекурсивной процедуры или функции.
0
Миниатюры
Деление на ноль  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.04.2015, 00:33
Ответы с готовыми решениями:

Деление на ноль
Помогите пожалуйста, почему пишет ошибку деление на...

Деление на ноль
Ребята подскажите, пожалуйста как обйоти ошибку деления на ноль вот код...

Деление на ноль
Что написать чтобы программа не вылетала?

Деление на ноль в функции
Процедура с функциями нахождения наибольшего общего делителя (по алгоритму...

"Деление на ноль" при взятии натурального логарифма
На строчке result:=(1/100*intens)* ln(random(100)); выдаётся ошибка с...

11
Puporev
Модератор
54678 / 42099 / 29068
Регистрация: 18.05.2008
Сообщений: 99,341
06.04.2015, 08:11 2
Цитата Сообщение от Nazar25 Посмотреть сообщение
Задано натуральное n.
А в числителе 2m
это ошибка, и что тогда должно быть в числителе, или и m нужно вводить и каким оно может быть?
0
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
06.04.2015, 16:47  [ТС] 3
Ой, простите, m и n - натуральные числа
0
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
29.04.2015, 23:14  [ТС] 4
Ребята, помогите!
При решении рекурсии выходит деление на ноль, что я делаю не так?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 m, n,i:integer;
  Rez:Extended;
 
implementation
 
{$R *.dfm}
function factorial(n:integer): integer;
begin
  if n=1 then factorial:=1
   else begin
  factorial:=n*factorial(n-1);
  end;
end;
function factor(i:integer): integer;
begin
  if i=1 then factor:=1
  else begin
  factor:=i*factor(i-1);
  end
 
end;
function recurs (i,n: integer): extended;
begin
if n=1 then rez := 1/3
else if n>i then rez:=1/3*sqrt(1/factor(i)+recurs(i+1,n));
     if n=i then rez:= 1/3*sqrt(1/factorial(n));
 
  end;
procedure TForm1.Button1Click(Sender: TObject);
begin
n:= StrToInt(Edit1.Text);
m:= StrToInt(Edit2.Text);
Edit3.Text:=FloatToStr ((exp(m*ln(2)))/rez);
end;
 
end.
0
SLideR11
2 / 2 / 0
Регистрация: 02.10.2013
Сообщений: 144
30.04.2015, 05:21 5
Я так понимаю тут должно быть else
Delphi
1
2
3
if n=1 then rez := 1/3
else if n>i then rez:=1/3*sqrt(1/factor(i)+recurs(i+1,n))
     ELSE if n=i then rez:= 1/3*sqrt(1/factorial(n));
0
Puporev
Модератор
54678 / 42099 / 29068
Регистрация: 18.05.2008
Сообщений: 99,341
30.04.2015, 08:35 6
Интересно чем отличаются функции factorial и factor?
Где вызов
Цитата Сообщение от SLideR11 Посмотреть сообщение
тут должно быть else
Возможно, но это не спасет ибо написана какая-то чушь.
Попробуй так.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function factorial(n:integer):extended;
begin
if n<2 then factorial:=1
else  factorial:=factorial(n-1)/n;
end;
 
function step2(i:integer):extended;
begin
if i=0 then step2:=1
else step2:=step2(i-1)*2;
end;
 
function recurs (i,n: integer): extended;
begin
if i=n then recurs:=sqrt(factorial(n))/3
else recurs:=sqrt(factorial(n-1)+recurs(n,i+1))/3;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var  m,n:integer;
begin
n:= StrToInt(Edit1.Text);
m:= StrToInt(Edit2.Text);
Edit3.Text:=FloatToStr (step2(m)/recurs(1,n));
end;
0
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
30.04.2015, 08:42  [ТС] 7
На этой строчке пишет:"Stack owerflow", если значение n больше трех
Delphi
1
else recurs:=sqrt(factorial(n-1)+recurs(n,i+1))/3;
0
planetoxod
250 / 161 / 24
Регистрация: 22.08.2014
Сообщений: 1,581
Записей в блоге: 1
30.04.2015, 08:54 8
Цитата Сообщение от Nazar25 Посмотреть сообщение
procedure TForm1.Button1Click(Sender: TObject);
begin
n:= StrToInt(Edit1.Text);
m:= StrToInt(Edit2.Text);
Edit3.Text:=FloatToStr ((exp(m*ln(2)))/rez); проверь rez на 0
end;
как-то так
0
Puporev
Модератор
54678 / 42099 / 29068
Регистрация: 18.05.2008
Сообщений: 99,341
30.04.2015, 09:15 9
Поправьте это
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
function recurs (n,i: integer): extended;
begin
if i=n then recurs:=sqrt(factorial(n))/3
else recurs:=sqrt(factorial(n-1)+recurs(n,i+1))/3;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var  m,n:integer;
begin
m:= StrToInt(Edit1.Text);
n:= StrToInt(Edit2.Text);
Edit3.Text:=FloatToStr(step2(m)/recurs(n,1));
end;
Добавлено через 20 минут
Кстати в функции factorial вычисляем не n!, a 1/n!
0
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
01.05.2015, 20:39  [ТС] 10
У меня почему-то не сходятся ответы: n=4, m=10; в программе 5137,03597179988;
а в Excel посчитал 2724,772394.
0
Вложения
Тип файла: xlsx Книга1.xlsx (9.2 Кб, 1 просмотров)
Puporev
Модератор
54678 / 42099 / 29068
Регистрация: 18.05.2008
Сообщений: 99,341
01.05.2015, 21:34 11
Хорошо что проверили.
Попробуйте так
Delphi
1
2
3
4
5
function recurs (n,i: integer): extended;
begin
if i=n then recurs:=sqrt(factorial(n))/3
else recurs:=sqrt(factorial(i)+recurs(n,i+1))/3;
end;
1
Nazar25
0 / 0 / 0
Регистрация: 06.12.2014
Сообщений: 80
02.05.2015, 09:27  [ТС] 12
Спасибо большое!
Все работает, считает правильно
0
02.05.2015, 09:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2015, 09:27

Исключение деления на ноль
Не могу понять как делать исключения(( unit Unit1; interface uses ...

Ошибка делния на ноль
Составил программу для решения СЛАУ методом гаусса. При вычислении выводит...

Делфи-отрицательный ноль
Мне даже уже прикольно, будто все болячки паскаля ко мне цепляются, решал одну...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru