Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Процедура в массиве


Автор: Neo007 25.4.2006, 00:05
Вот нашёл задачку про процедуры и думаю какую процедуру туда лучше вставить....
Код

program MasProc;
const num=10;
type MyMas=array[1..num, 1..num] of real;
var ms: MyMas; i, j, k, l: integer; val: real;

procedure Myproc














begin
. . . . .
 MyProc( ms, i, k, j, val);  {При вызове результата, находиться массива ms i-той строчки j-того элемента и k-той строчки j-того элемента сумма, которая возвращаеться переменной val}
. . . . .
end.


так будет правильно? :
var l:integer;
j:=1;
for i:=1 to num do begin
for k:=1 to num do begin
j:=j+1;
end;
end;
l:=mymas[i,j]+mymas[k,j]
val:=l

 

Автор: Heremum 25.4.2006, 07:13
Пардон, ты пытаешься в процедуру передать параметры, а в описании не указаны никакие параметры. 

Автор: Neo007 25.4.2006, 10:17
Ну а разве без пораметров будет правильно? 
Ну дапустим...как тогда стоит записать процедуру? 

Автор: Heremum 25.4.2006, 13:45
Задача какая-то непонятная. Ещё раз отдельно выпиши условие. Найти сумму элементов массива: [i, j] и [k, j]? А как меняться должны эти переменные i, j, k? 

Автор: Neo007 25.4.2006, 17:18
В задание кроме того что я указал ничё не написано...ну я думаю просто цикл от i:=1 to num
и k:=1 to num ,  а j скажем указыватья в главной программе , а в процедуре просто меняеть при выполнении цикла от j до j+1 несколько раз...
вот только программа всё равно не выходит...
постоянно какая то ошибка, не пойму где... 

Автор: Heremum 25.4.2006, 18:56
Интересно, кто писал само задание? smile
Ну да ладно, перечитав 10 раз, я понял след.: написать функцию, которая возвращает значение массива ms элементов [i, j] и [k, j], в переменную val;
Все параметры должны передаваться в функцию: i, j, k;
Тут есть двоиственность:
1)Ты можешь указать один из параметров функции - переменную, в которую будет записано значение результата.
2)Ты можешь просто присвоить результат вычисление вернув его, как завершении функции.
Вот так:
Код

Uses crt;
Var ms: array [1..10][1..10] of Integer;{Челочисленный массив 10Х10}
val : Integer;

function My(Integer: i, j, k) : Integer;
Begin
    My := ms[i, j] + ms[k, j];
End;
BEGIN
ClrScr;
val := My(1, 2, 3);
WriteLn(val);
END.

Тут реализован второй способ из двойственонсти. Как реализовать первый, честно скажу: не помню, в Паскале нужна ли работа с адресами при указании параметра функции. 

Автор: Neo007 26.4.2006, 13:15
я конечно не спец в паскале но ты что то не то написал....  smile  

Автор: Heremum 26.4.2006, 18:07
Я выполнил задание, которое понял. Берём два элемента массива [i, k] и [k, j]. Возвращаем их сумму. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)