Задана прямоугольная матрица B размера m x n .Выполнить над матрицей В действия.
| 2 1 7 5 |
B= |8 9 11 3 |
|-3 -4 18 7 |
1.Найти сумму элементов строк и столбцов, на пересечении которых лежат отрицательные элементы.
2.Вычислить суммы элементов строк, номера которых определяются номерами ненулевых элементов заданного вектора (для этого пользователю требуется задать вектор)
3.Сформировать матрицу С из строк В расположив их так, чтобы количество отрицательных элементов в строке возростало с увеличением номера строки.
4.Построить матрицу С=А*В*В, где А - прямоугольная матрица размера n x m, а В квадратная матрица (m x m) .(для этого пользователю требуется задать матрицу А и В, и вывести С как матрицу)
5.Сформировать из столбцов В матрицу С , в которой столбцы расположены в порядке возростания сумм их элементов.
6.Вычислить суммы элементов строк, номера которых задаются целочисленным вектором.
7. Если количество ненулевых элементов В меньше , чем (m x n)/3 , сформировать матрицу С размерами к х 3 в первом столбце которой содержатся ненулевые элементы матрицы В , а во втором и третьем столбцах - их координаты в исходной матрице.( (m x n)/3 - число, число к число не нулевых элементов в матрице В.)
ПОМОГИТЕ ОФОРМИТЬ ВСЁ ЧЕРЕЗ ПРОЦЕДУРЫ БЕЗ ГЛОБАЛЬНЫХ ПЕРЕМЕННЫХ
1
uses crt; Const Nmax=8; NMAXIMUM=999999; var i,j,m,n,k,p:integer; A,B,C:array[1..Nmax,1..Nmax] of real; v:array[1..Nmax] of real; sum,sum1,sum2:real; begin writeln('Vvedite kol-vo strok v matrice B (do ',Nmax,')');readln(m); writeln('Vvedite kol-vo stolbcov v matrice B (do ',Nmax,')');readln(n); writeln; for i:=1 to m do for j:=1 to n do begin write('B[',i,',',j,']: ');readln(B[i,j]); end; writeln; writeln(' matrica B :'); writeln; for i:=1 to m do begin for j:=1 to n do write(B[i,j]:9:1,' '); writeln; end; begin for i:=1 to m do for j:=1 to n do if B[i,j]<0 then begin sum1:=0; begin for k:=1 to n do begin sum1:=sum1+B[i,k]; end; end; sum2:=0; begin for p:=1 to m do begin sum2:=sum2+B[p,j]; end; end; sum:=sum1+sum2; writeln('Summa stroki ',i,' i stolbca ',j,' = ',sum:5:2) end; end; readln; end.
2
uses crt; Const Nmax=8; var i,j,m,n,g,o,l:integer; A,B,C:array[1..Nmax,1..Nmax] of real; v:array[1..Nmax] of real; sm,sum,summax,summin:real; begin writeln('Vvedite kol-vo strok v matrice B (do ',Nmax,')');readln(m); writeln('Vvedite kol-vo stolbcov v matrice B (do ',Nmax,')');readln(n); writeln('Vvedite kol-vo elementov vektora v');readln(g); writeln; for i:=1 to m do for j:=1 to n do begin write('B[',i,',',j,']: ');readln(B[i,j]); end; writeln; writeln(' matrica B :'); writeln; for i:=1 to m do begin for j:=1 to n do write(B[i,j]:9:1,' '); writeln; end; for i:=1 to g do begin write('V[',i,']=');readln(v[i]); end; writeln; for i:=1 to m do begin if v[i]<>0 then begin sm:=0; for j:=1 to n do sm:=sm+B[i,j]; writeln('Summa v stroke # ',i,'=',sm); end; end; readln; clrscr; end.
3
uses crt; Const NMAX=4; type matr=array[1..NMAX,1..NMAX+2] of integer; procedure Vvod_B(var B:matr);{создание и вывод на экран исходной матрицы} var i,j,k,l,m,n,x:integer; begin writeln('Vvedite kol-vo strok v matrice B ');readln(m); writeln('Vvedite kol-vo stolbcov v matrice B ');readln(n); writeln; for i:=1 to m do for j:=1 to n do begin write('B[',i,',',j,']: ');readln(B[i,j]); end; writeln; writeln(' matrica B :'); writeln; for i:=1 to m do begin for j:=1 to n do write(B[i,j]:5,' '); writeln; end; end; procedure Summ_Str(var B:matr); var i,j,k,l,m,n,x:integer; begin for i:=1 to m do begin k:=0; for j:=1 to n do if b[i,j]<0 then k:=k+1;{считаем количество отрицательных в строке} b[i,n+1]:=k;{записывем его в первый дополнительный столбец} b[i,n+2]:=i;{во аторой дополнительный записываем номер строки} end; end; procedure Sort_Str(Var B:matr); var i,j,l,x,m,n:integer; begin for i:=1 to m-1 do for j:=i+1 to m do if b[i,n+1]>b[j,n+1]then{по возрастанию знасений в предпоследнем столбце} for l:=n+1 to n+2 do{сортируем оба дополнительных столбца} begin x:=b[i,l]; b[i,l]:=b[j,l]; b[j,l]:=x; end; end; procedure Vyvod_C3(var B,C:matr); var i,j,m,n:integer; begin writeln; writeln(' matrica C :'); writeln; for i:=1 to m do begin for j:=1 to n do begin c[i,j]:=b[b[i,n+2],j]; {строке массива С присваиваем значения строки с номером в последнем столбце массива В} write(c[i,j]:9); end; writeln; end; end; var B,C:matr; begin clrscr; Vvod_B(B); Summ_Str(B); Sort_Str(B); Vyvod_C3(B,C); readln; end. end.
4
uses crt; const n=4; m=3; type matr=array[1..n,1..m] of integer; procedure Vvod(var B:matr;x:integer;c:char); var i,j:integer; begin writeln('Vvedite ',x*m,' Elementov Matrici ',c,':'); for i:=1 to x do for j:=1 to m do begin write('el[',i,',',j,']='); readln(B[i,j]); end; end; procedure Vyvod(var B:matr;x:integer;c:string); var i,j:integer; begin writeln('Matrica ',c,':'); for i:=1 to x do begin for j:=1 to m do write(B[i,j]:4,' '); writeln; end; end; procedure UmnMatr(m1,m2:matr;x:integer;var m3:matr); var p,j,i:integer; begin for p:=1 to x do for j:=1 to m do begin m3[p,j]:=0; for i:=1 to m do begin m3[p,j]:=m3[p,j]+m1[p,i]*m2[i,j]; end; end; end; var a,b,c,d:matr; begin clrscr; Vvod(a,n,'A'); Vvod(b,m,'B'); clrscr; Vyvod(a,n,'A'); Vyvod(b,m,'B'); UmnMatr(a,b,n,d); Vyvod(d,n,'D=A*B'); UmnMatr(d,b,n,c); Vyvod(c,n,'C=A*B*B'); readln end.
5
uses crt; const NMAX=4; type matr=array[1..NMAX+2,1..NMAX] of integer;{2 лишних строки для сортировки} procedure Vvod_B(var B:matr);{создание и вывод на экран исходной матрицы} var i,j,m,n:integer; begin writeln('Vvedite kol-vo strok v matrice B ');readln(m); writeln('Vvedite kol-vo stolbcov v matrice B ');readln(n); writeln; for i:=1 to m do for j:=1 to n do begin write('B[',i,',',j,']: ');readln(B[i,j]); end; writeln; writeln(' matrica B :'); writeln; for i:=1 to m do begin for j:=1 to n do write(B[i,j]:9,' '); writeln; end; end; procedure Summ_Stb(var B:matr);{подсчет суммы в столбцах} var i,j,sm,m,n:integer; begin for j:=1 to n do begin sm:=0; for i:=1 to m do sm:=sm+B[i,j]; B[m+1,j]:=sm;{в первую дополнительную строку запишем суммы в столбцах} B[m+2,j]:=j;{во второю номера столбцов} end; end; procedure Sort_Stb(var B:matr);{сортировка номеров столбцов по возрастанию суммы} var i,j,l,x,m,n:integer; begin for i:=1 to n-1 do for j:=i+1 to n do if B[m+1,i]>B[m+1,j]then for l:=m+1 to m+2 do begin x:=B[l,i]; B[l,i]:=B[l,j]; B[l,j]:=x; end; end; procedure Vyvod_C(var B,m1:matr);{вывод результирующей матрицы} var i,j,m,n:integer; begin writeln('Matrica C:'); writeln; for i:=1 to m do begin for j:=1 to n do begin m1[i,j]:=B[i,B[m+2,j]]; {каждой строке новой матрицы присваиваем знвчения строк, указанных в последней строке исходной матрицы после сортировки} write(m1[i,j]:4); end; writeln; end; end; var B,C:matr; begin clrscr; randomize; Vvod_B(B); Summ_Stb(B); Sort_Stb(B); Vyvod_C(B,C); readln; end.
6
uses crt; const m=3;{размеры матрицы по условию} n=4; type mas=array[1..50] of integer;{целочисленный вектор} str=array[1..n] of integer;{массивы-строки матрицы} matr=array[1..m] of str;{матрица-массив строк} procedure VvodMatr(var mt:matr); var i,j:integer; begin writeln('Введите ',m*n,' элементов матрицы:'); for i:=1 to m do for j:=1 to n do begin write('el[',i,',',j,']='); readln(mt[i,j]); end; end; procedure VyvodMatr(var mt:matr); var i,j:integer; begin writeln('Матрица:'); for i:=1 to m do begin for j:=1 to n do write(mt[i,j]:3,' '); writeln; end; end; procedure VvodMas(var ms:mas;var x:integer); var i:integer; begin write('Размер массива x='); readln(x); writeln('Введите ',x,' элементов массива:'); for i:=1 to x do begin write('el[',i,']='); readln(ms[i]); end; end; procedure VyvodMas(var ms:mas;x:integer); var i:integer; begin writeln('Массив:'); for i:=1 to x do write(ms[i],' '); writeln; end; function Summ(s:str):integer; var i,sm:integer; begin sm:=0; for i:=1 to n do sm:=sm+s[i];{считаем сумму в массиве-строке матрицы} Summ:=sm; end; procedure SummStr(mt:matr;ms:mas;x:integer;var sm:integer); var i,j:integer; begin for i:=1 to m do for j:=1 to x do if i=ms[j] then{если номер строки есть в векторе} begin writeln('Сумма в строке ',i,'=',Summ(mt[i]));{считаем и выводим сумму} break;{дальше не ищем, чтоб не было повторов} end; end; var a:matr; v:mas; k,sm:integer; begin clrscr; VvodMatr(a); VvodMas(v,k); clrscr; VyvodMatr(a); VyvodMas(v,k); SummStr(a,v,k,sm); readln end.
7
uses CRT; Const Nmax=12; var B,C:array[1..Nmax,1..Nmax] of integer; i,j,m,n,y:integer; procedure Vvod_B; begin writeln('Vvedite kol-vo strok v matrice B ');readln(m); writeln('Vvedite kol-vo stolbcov v matrice B ');readln(n); writeln; for i:=1 to m do for j:=1 to n do begin write('B[',i,',',j,']: ');readln(B[i,j]); end; writeln; writeln(' matrica B :'); writeln; for i:=1 to m do begin for j:=1 to n do write(B[i,j]:5,' '); writeln; end; read; end; procedure Pere; begin y:= 0; begin for i:=1 to m do begin for j:=1 to n do begin if B[i,j]<>0 then begin y:=y+1; c[y,1]:=B[i,j]; c[y,2]:=i; c[y,3]:=j; end; end; end; read; end; end; procedure Vivod_C; begin writeln; writeln('Matrica C :'); writeln; for i:=1 to y do begin for j:=1 to 3 do write(C[i,j]:5,' '); writeln; end; readln; end; begin clrscr; Vvod_B; Pere; Vivod_C; end.