Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 15.12.2013, 19:59
Luckduck Luckduck вне форума
Прохожий
 
Регистрация: 29.10.2013
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Помогите разобраться с процедурой/фукцией

Нужно найти максимальный элемент одномерного массива и с помощью его найти корни. Нахождение максимального значения нужно оформить в виде процедуры/функции. Всё сделал, но вот значения этого максимального значения почему-то всегда ноль. Пробовал использовать и процедуру и функцию, результата не дало. Помогите найти ошибку в коде

Код:
type mass1 = array[1..3] of real;
mass2 = array[1..4] of real;
mass3 = array[1..5] of real;
var
  Form1: TForm1;
  c,d,p,dis,x1,x2,max:real;
  i,j:integer;
  function max1 (j:integer; p:real; w:array of real) : real;
  procedure max2 (j:integer; d:real; y:array of real);
  procedure max3 (j:integer; c:real; z:array of real);
 
  const
  w: mass1 = (2.1,3.8,0.1);
  y: mass2 = (0.5,4.8,5.1,-1.5);
  z: mass3 = (1.5,1.8,3.4,0.2,2.85);
 
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
max1(j,p,w);
max2(j,d,y);
max3(j,c,z);
dis:=d*d-4*p*c;
x1:=-d+sqrt(dis)/2*p;
x2:=-d-sqrt(dis)/2*p;
label2.caption:='X1='+floattostr(x1);
label3.caption:='X2='+floattostr(x2);
label4.caption:=floattostr(p);
label5.caption:=floattostr(d);
label6.caption:=floattostr(c);
end;
 
function max1 (j:integer; p:real; w:array of real) : real;
begin
p:=-999999;
for j:=1 to 3 do
begin
if w[j]>p then
p:=w[j];
end;
end;
 
procedure max2 (j:integer; d:real; y:array of real);
begin
d:=-999999;
for j:=1 to 4 do
begin
if y[j]>d then
d:=y[j];
end;
end;
 
procedure max3 (j:integer; c:real; z:array of real);
begin
c:=-999999;
for j:=1 to 5 do
begin
if z[j]>c then
c:=z[j];
end;
end;
 
 
end.

Последний раз редактировалось Luckduck, 15.12.2013 в 20:02.
Ответить с цитированием
  #2  
Старый 15.12.2013, 20:30
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию

Во 1-х ни одна из ф-й не возвращает результат.
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием
Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение:
Luckduck (15.12.2013)
  #3  
Старый 15.12.2013, 20:43
Luckduck Luckduck вне форума
Прохожий
 
Регистрация: 29.10.2013
Сообщения: 5
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от M.A.D.M.A.N.
Во 1-х ни одна из ф-й не возвращает результат.

Добавил в код результат, не помогло
Код:
function max1 (j:integer; p:real; w:array of real) : real;
begin
p:=-999999;
for j:=1 to 3 do
begin
if w[j]>p then
p:=w[j];
end;
result:=p;
end;

Есть ещё варианты?

Проблема решена путём передачи параметров по ссылке

Последний раз редактировалось M.A.D.M.A.N., 15.12.2013 в 22:48.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:18.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025