Предлагаю такое решение: Суть в том что массив одномерный а работаем с ним ч-з процедуры и функции которые создают эфект "двухмерности".
Код | const n=6; m=7;
type T2DArray=array[1..n*m] of integer; {новый тип "двухмерный" массив}
var C:T2DArray; x,y:integer; {начало и конец диапазона} Summ:integer;
procedure Read2DArray(var C:T2DArray); {чтение массива} var i,j:integer; begin for i:=1 to n do for j:=1 to m do begin write('C[',i,',',j,']='); {элементу C[i,j] соответствует C[(i-1)*n+j] эл. в "нашей псевдо матрице"} readln(C[(i-1)*n+j]); end; end;
procedure Print(C:T2DArray); {вывод на экран} var i,j:integer; begin for i:=1 to n do begin for j:=1 to m do write(C[(i-1)*n+j]:3); writeln; end; end;
procedure FillRow(var C:T2DArray;Row,K:integer); {меняет эл. строки Row массива С на эл. К} var j:integer; begin for j:=1 to n do C[(Row-1)*n+j]:=K; end;
function GetSumXY(C:T2DArray;x,y:integer):integer; var i,s:integer; begin s:=0; for i:=x to y do s:=s+C[i]; GetSumXY:=s; end;
begin Read2DArray(C); {читаем массив} {вводим диапазон} write('x='); readln(x); write('y='); readln(y); получаем сумму Summ:=GetSumXY(C,x,y); writeln('Array C:'); {выводим на экран необработанный массив} Print(C);
writeln('Modyfied array C:'); FillRow(C,1,summ); {меняем первую строку матрицы на значение найденной суммы} Print(C); {выводим обработанный массив} end.
|
|