В матрице найти два столбца равными суммами и поменять их элементы местами - Pascal
Формулировка задачи:
Помогите написать программу , в матрице найти два столбца равными суммами сумами и поменять их элементы местами.
Решение задачи: «В матрице найти два столбца равными суммами и поменять их элементы местами»
textual
Листинг программы
uses crt; const nmax=10; var a:array[1..nmax,1..nmax] of integer; m,n,i,j,j1,j2,k,p:byte; sm1,sm2,x:integer; begin clrscr; repeat write('Количество строк до ',nmax,' m='); readln(m); until m in [1..nmax]; repeat write('Количество столбцов до ',nmax,' n='); readln(n); until n in [1..nmax]; writeln('Введите элементы матрицы по столбцам'); for j:=1 to n do begin writeln('Столбец ',j); for i:=1 to m do begin write('a[',i,',',j,']='); readln(a[i,j]); end; end; clrscr; writeln('Исходная матрица:'); for i:=1 to m do begin for j:=1 to n do write(a[i,j]:4); writeln; end; k:=0; j:=1; while(j<n)and(k=0)do begin sm1:=0; for i:=1 to m do sm1:=sm1+a[i,j]; p:=j+1; while (p<=n)and(k=0) do begin sm2:=0; for i:=1 to m do sm2:=sm2+a[i,p]; if sm1=sm2 then begin k:=1; j1:=j; j2:=p; end else inc(p); end; if k=0 then inc(j); end; if k=0 then write('Нет столбцов с одинаковой сумммой') else begin writeln('Одинаковая сумма в столбцах ',j1,'=',sm1,' ',j2,'=',sm2); for i:=1 to m do begin x:=a[i,j1]; a[i,j1]:=a[i,j2]; a[i,j2]:=x; end; writeln('Обмен этих столбцов'); for i:=1 to m do begin for j:=1 to n do write(a[i,j]:4); writeln; end; end; readln end. readln end.
Объяснение кода листинга программы
- Создается матрица размером nmax x nmax и инициализируется нулями.
- Пользователю предлагается ввести количество строк и столбцов матрицы.
- Введенные данные сохраняются в переменных m и n.
- Пользователю предлагается ввести элементы матрицы по столбцам.
- Введенные данные сохраняются в массиве a.
- Инициализируются переменные sm1, sm2, x, k и j1, j2, j3.
- Запускается цикл while, который выполняется до тех пор, пока j<n и k=0.
- Внутри цикла инициализируется sm1 как сумма элементов a[i,j] для i в диапазоне от 1 до m.
- Затем p инициализируется как j+1 и цикл while повторяется до тех пор, пока p<=n и k=0.
- Внутри цикла инициализируется sm2 как сумма элементов a[i,p] для i в диапазоне от 1 до m.
- Если sm1 равно sm2, то k устанавливается в 1, j1 устанавливается в j и j2 устанавливается в p.
- Если sm1 не равно sm2, то p устанавливается равным p+1.
- Если k равно 0, то j увеличивается на 1.
- Выводится сообщение, указывающее, были ли найдены столбцы с одинаковой суммой.
- Если k равно 0, выводится сообщение о том, что столбцы с одинаковой суммой найдены.
- Затем выводится сообщение о том, что обмен этих столбцов был выполнен.
- Выводится окончательный вид матрицы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д