Дана квадратная матрица. Получить вектор, элементами которого являются суммы элементов всех диагоналей, параллельных побочной (включаю побочную диагональ)
Категория: Delphi/Pascal
2012-01-15 22:07:38
Для откладки программы элементы массива сформировать с помощью генератора случайных чисел.
code: #pascal
program PascalGuru; var A:array[1..100,1..100] of integer; vector:array[1..100] of integer; n,i,j,m:integer; procedure min(n:integer; var nv:integer); {процедура выводящая суммы/ nv=кол-ко сумм диагоналей} var i,j,p,pk,sum,index,sumarno :integer; {нужные переменные для вычисления} ot:array[1..100] of integer; begin pk:=1; sumarno:=0; {обнуляем переменную ОБЩЕЙ суммы по всем диагоналям} for i:=1 to 100 do if i mod 2=0 then begin inc(pk); ot[pk]:=i; end; {вычисляем номера диагоналей} index:=0; {обнуляем переменную индексов диагоналей } for p:=1 to ot[n]+1 do {цикл номеров диагоналей} begin sum:=0; {обнуляем переменную суммы текущей диагонали } for i:=1 to n do for j:=1 to n do if i+j-1=p then sum:=sum+A[i,j]; {вычисляем сумму текущей диагонали } inc(index); {+1 переменной индексов диагоналей } vector[index]:=sum; {записываем сумму в вектор} sumarno:=sumarno+sum; {увеличиваем переменную ОБЩЕЙ суммы по всем диагоналям - на текущ. сумму} writeln('Summa "',index,'" paralelinoi p.diagonali= ',sum); {текущ. сумму выводим на экран} end; writeln; writeln('Summa vsex diagonalei= ',sumarno); {выводим на экран результат ОБЩЕЙ суммы по всем диагоналям} nv:=index; end; {*********************///*************************** } begin randomize; write('N= '); readln(n); {ввод размера матрицы} for i:=1 to n do for j:=1 to n do A[i,j]:=(-3)+random(9); {заполнение элементов матрицы} for i:=1 to n do begin writeln; for j:=1 to n do write (A[i,j]:8); end; { вывод матрицы на экран } writeln; writeln; min(n,m); {***вызов процедуры, выводящей суммы***} writeln; writeln('Vector iz summ:');; for i:=1 to m do write(vector[i]:8); {вывод вектора из сумм диагоналей} readln; end.
Поделиться: