![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Нужно найти максимальный элемент одномерного массива и с помощью его найти корни. Нахождение максимального значения нужно оформить в виде процедуры/функции. Всё сделал, но вот значения этого максимального значения почему-то всегда ноль. Пробовал использовать и процедуру и функцию, результата не дало. Помогите найти ошибку в коде
Код:
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
|
||||
|
||||
|
Во 1-х ни одна из ф-й не возвращает результат.
|
| Этот пользователь сказал Спасибо M.A.D.M.A.N. за это полезное сообщение: | ||
Luckduck (15.12.2013)
| ||
|
#3
|
|||
|
|||
|
Цитата:
Добавил в код результат, не помогло Код:
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. |