Задана прямоугольная матрица 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.