С Новым годом! Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 18
1

Переполнение стека. Модуль

07.05.2013, 12:58. Показов 811. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Требуется написать программу вывода таблицы функции, которую оформить в виде процедуры. Функций должно быть несколько на выбор, их расчёт должен производится в подключаемом модуле.

Модуль:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
unit Matfu;
 
interface
Function sin(x:extended) : extended;
Function ch(x:extended) : extended;
Function exp(x:extended) : extended;
implementation
Function sin;
begin
Result:=sin(x);
end;
 
Function ch;
begin
Result:=(exp(x)+exp(-x))/2;
end;
 
Function exp;
begin
Result:=exp(x*cos(pi/4))*cos(x*sin(pi/4));
end;
end.
Сама программа:
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Buttons, Matfu;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Memo1: TMemo;
    Button1: TButton;
    BitBtn1: TBitBtn;
    RadioGroup1: TRadioGroup;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
Type
fun = function(x:extended):extended; // Объявление типа функция
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:='0';
Edit2.Text:='3';
Edit3.Text:='0,3';
Memo1.Clear;
RadioGroup1.ItemIndex:=0;
end;
 
procedure Tabl(f:fun;xn,xk,h:extended); // Расчет таблицы
var x,y: extended;
begin
x:=xn;
repeat
y:=f(x);
Form1.Memo1.Lines.Add('x='+FloatToStrf(x,fffixed,8,3)+
' y='+FloatToStrf(y,fffixed,8,3));
x:=x+h;
until (x>xk);
end;
 
 
procedure TForm1.Button1Click(Sender: TObject);
var xn,xk,h : extended;
begin
xn:=StrToFloat(Edit1.Text); // Начальное значение интервала
xk:=StrToFloat(Edit2.Text); // Конечное значение интервала
h:=StrToFloat(Edit3.Text); // Шаг расчета
case RadioGroup1.ItemIndex of // Выбор функции
0 : Tabl(sin,xn,xk,h);
1 : Tabl(ch,xn,xk,h);
2 : Tabl(exp,xn,xk,h);
end;
end;
end.
Не знаю почему, но вылетает ошибка с переполнением стека уже при нажатии на кнопку. Помогите, пожалуйста!
Переполнение стека. Модуль
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2013, 12:58
Ответы с готовыми решениями:

Переполнение стека
Вот пробую писать программку по поиску в реестре битых ссылок на файлы но столкнулся с такой...

переполнение стека
Помогите довести программу до ума. Все, что я могла с ней сделать - я уже сотворила. В...

Переполнение стека
Добрый вечер)пытаюсь написать программу, но возникла ошибка с переполнением стека в данной...

переполнение стека!
вот кодprocedure TForm1.CheckBox7Click(Sender: TObject); begin if checkbox7.Checked=false then...

6
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.05.2013, 13:02 2
Цитата Сообщение от Shinzore Посмотреть сообщение
Не знаю почему
Из-за рекурсивного вызова ф-ции sin()
0
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 18
07.05.2013, 13:12  [ТС] 3
Спасибо, а как это исправить? Делал по примеру из методички, там также было...

Добавлено через 3 минуты
Сейчас попробовал взять простейшие функции, к примеру y=x+1 для неё всё считает. Но мне надо именно эти.
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.05.2013, 13:13 4
Либо изменить название своей ф-ции, например, MySin()
либо в теле своей ф-ции указать пространство имен для вызываемой ф-ции - system.sin(..)

Добавлено через 51 секунду
Цитата Сообщение от Shinzore Посмотреть сообщение
Делал по примеру из методички
Методички пишут либо с бодуна либо такие же студни-лаборанты)
1
0 / 0 / 0
Регистрация: 22.04.2013
Сообщений: 18
07.05.2013, 13:19  [ТС] 5
О ура! Спасибо огромное! Никогда бы не догадался, что так можно.

Цитата Сообщение от mss Посмотреть сообщение
Методички пишут либо с бодуна либо такиеже студни-лаборанты)
Ну да..а нам куда деваться, мы по ним учимся...
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
07.05.2013, 13:32 6
Цитата Сообщение от Shinzore Посмотреть сообщение
а нам куда деваться
А вам в книжных магазинах, в библиотеках да в интернетах нужно пропадать черпая знания, благо все возможности есть, а вы все ждете когда вам готовое в методичках или на форумах разжуют, в рот положат и за вас же проглотят)
0
118 / 118 / 2
Регистрация: 29.01.2013
Сообщений: 437
07.05.2013, 19:01 7
mss,

Не по теме:

А главное, сделают все это совешенно бесплатно

0
07.05.2013, 19:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2013, 19:01
Помогаю со студенческими работами здесь

переполнение стека
Здравствуйте. Пишу пару программ, они постепенно развивались, вместе с моими познаниями. Много...

Ошибка: Переполнение стека
Помогите разобраться непойму в чем дело! Выдает ошибку Переполнение стека! Вот прога моя! В...

Переполнение стека
Добрый день! Программа компилируется, работает нормально, но при закрытии выдает ошибку...

Переполнение стека
Доброго времени суток, форумчане! Начинаю плюсы осваивать, подскажите, безопасен ли код: ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru