1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Массивы, передача параметров в процедуры и функции
var a: array [1..100] of tStroka; N, M, i, j :integer; s:real; e: tStroka;
begin write('N, M -> '); readln(N, M); write('Input matrix -> '); for i:=1 to N do for j:=1 to M do begin write('A[',i,',',j,'] -> '); readln(a[i, j]); end; for i:=1 to n do for j:=i-1 downto 1 do begin if a[j,1]<a[j+1,1] then begin e:=a[j]; a[j]:=a[j+1]; a[j+1]:=e; end;
writeln (a[i,j]); end; for i:= 1 to n do begin s:=0; for j:= 1 to m do s:=s+a[i,1]; end; s:=s/N; write (s); end.
Как сделать сортировку в виде процедуры, а вычисление в виде функции? Препод говорил что-то о разных способах задания переменых в процедурах и функциях, и я запутался, когда, какой способ использовать. Помогите, пожалуйста,.
Как сделать сортировку в виде процедуры, а вычисление в виде функции? Препод говорил что-то о разных способах задания переменых в процедурах и функциях, и я запутался, когда, какой способ использовать.
Думаю, твой препод имел в виду параметры-значения и параметры-переменные. Сортировку нужно применять непосредственно к самой матрице, и результат должен отразиться на ней - следовательно, надо применять var-параметр. Вычисление чего-то там (я так и не понял, чего именно; если среднее по столбцам - то оно делается неправильно) дает некий отдельный результат, никак не отражающийся на самой матрице. Следовательно, жеательно применить параметр-значение (хотя var-параметр тоже будет работать, и даже быстрее, нужно только следить за тем, чтоб случайно не испортить матрицу). А все вспомогательные переменнные (параметры цикла, промежуточные суммы..) надо делать локальными, то есть определять их внутри процедуры/функции. Короче, примерно вот так:
const Max= 100;
type tStroka= array [1..Max] of integer; tMnogoStrok= array [1..100] of tStroka;
var a: tMnogoStrok; N, M, i, j:integer; e: tStroka;
procedure Sort(var a: tMnogoStrok); var i,j: integer; begin for i:=1 to n do for j:=i-1 downto 1 do begin if a[j,1]<a[j+1,1] then begin e:=a[j]; a[j]:=a[j+1]; a[j+1]:=e; end; writeln (a[i,j]); end end;
function Calculation(a: tMnogoStrok): double; var i,j: integer; s: double; begin for i:= 1 to n do begin s:=0; for j:= 1 to m do s:=s+a[i,1]; end; Calculation:= s/N end;
begin write('N, M -> '); readln(N, M); write('Input matrix -> '); for i:=1 to N do for j:=1 to M do begin write('A[',i,',',j,'] -> '); {readln(a[i, j]);} a[i,j]:= Random(n*m); end; Sort(a); writeln (Calculation(a)); end.
--------------------
я - ветер, я северный холодный ветер я час расставанья, я год возвращенья домой