![]() |
|
|
Регистрация | << Правила форума >> | 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-х ни одна из ф-й не возвращает результат.
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
Этот пользователь сказал Спасибо 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. |