Найти количество отрицательных элементов в двух матрицах - Pascal
Формулировка задачи:
Помогите исправить
Ввести матрицы A(n1,m1), B(n2,m2). Найти количества отрицательных k1, k2 элементов в них. Если k1>k2, то периметр матрицы А заменить на k1, иначе – периметр матрицы В на k2. Матрицы отпечатать. Подпрограммы: ввод матрицы, поиск количества, замена, вывод матрицы.
program p2; type mass=array[1..20,1..20] of integer; var n1,m1,n2,m2,min1,min2:integer; a,b:mass; procedure vvod(n:integer; m:integer; var X:mass); var i,j:integer; begin for i:=1 to n do for j:=1 to m do begin write('элемент ',i,' строки ',j,' столбца -'); readln(X[i,j]); end; end; procedure poisk_k(n:integer; m:integer;var a:mass; var k:integer ); var i,j:integer; begin for i:=1 to n do for j:=1 to m do if a[i,j]<0 then k:=k+1; end; procedure zamena(n:integer; m:integer; var x:mass; k:integer); var i,j:integer; begin for j:=1 to m do x[1,j]:=k; x[n,j]:=k; end; begin for i:=1 to n do x[i,m]:=k; x[i,1]:=k; end; procedure vivod(n:integer;m:integer;var x:mass); var i,j:integer; begin for i:=1 to n do begin for j:=1 to m do write(x[i,j],' '); writeln; end; end; begin write('число строк матрицы А -'); readln(n1); write('число столбцов матрицы А -'); readln(m1); write('число строк матрицы B -'); readln(n2); write('число столбцов матрицы B -'); readln(m2); vvod(n1,m1,a); vvod(n2,m2,b); poisk_k1(n1,m1,a,k1); poisk_k2(n2,m2,b,k2); if k1>k2 then zamena(n1,m1,a,k1) else zamena(n2,m2,b,k2); vivod(n1,m1,a); writeln; vivod(n2,m2,b); end.
Решение задачи: «Найти количество отрицательных элементов в двух матрицах»
textual
Листинг программы
program p2; type mass=array[1..20,1..20] of integer; procedure vvod(var n,m:integer;var X:mass;c:char); var i,j:integer; begin write('число строк матрицы ',c,' = '); readln(n); write('число столбцов матрицы ',c,' = '); readln(m); for i:=1 to n do for j:=1 to m do begin write('элемент ',i,' строки ',j,' столбца -'); readln(X[i,j]); end; end; procedure poisk_k(n,m:integer;a:mass; var k:integer ); var i,j:integer; begin for i:=1 to n do for j:=1 to m do if a[i,j]<0 then k:=k+1; end; procedure zamena(n,m,k:integer;var x:mass); var i,j:integer; begin for j:=1 to m do begin x[1,j]:=k; x[n,j]:=k; end; for i:=1 to n do begin x[i,m]:=k; x[i,1]:=k; end; end; procedure vivod(n,m:integer;x:mass;s:string); var i,j:integer; begin writeln(s); for i:=1 to n do begin for j:=1 to m do write(x[i,j]:4); writeln; end; end; var n1,m1,n2,m2,k1,k2:integer; a,b:mass; begin vvod(n1,m1,a,'A'); vvod(n2,m2,b,'B'); vivod(n1,m1,a,'Исходная матрица А'); poisk_k(n1,m1,a,k1); vivod(n2,m2,b,'Исходная матрица В'); poisk_k(n2,m2,b,k2); if k1>k2 then begin zamena(n1,m1,k1,a); vivod(n1,m1,a,'Измененная матрица А'); end else begin zamena(n2,m2,k2,b); vivod(n2,m2,b,'Измененная матрица B'); end; end.
Объяснение кода листинга программы
- В процедуре vvod считываются данные о матрице из консоли и сохраняются в переменных n, m и X.
- В процедуре poisk_k происходит подсчет количества отрицательных элементов в матрице X.
- В процедуре zamena производится замена всех отрицательных элементов в матрице X на значение k.
- В процедуре vivod выводится исходная матрица A или измененная матрица B в зависимости от значения переменной k.
- В основной программе считываются данные о двух матрицах A и B, выполняется поиск отрицательных элементов и их замена на значение k.
- В конце программы выводится количество отрицательных элементов в матрице X.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д