В матрице найти два столбца равными суммами и поменять их элементы местами - 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.

Объяснение кода листинга программы

  1. Создается матрица размером nmax x nmax и инициализируется нулями.
  2. Пользователю предлагается ввести количество строк и столбцов матрицы.
  3. Введенные данные сохраняются в переменных m и n.
  4. Пользователю предлагается ввести элементы матрицы по столбцам.
  5. Введенные данные сохраняются в массиве a.
  6. Инициализируются переменные sm1, sm2, x, k и j1, j2, j3.
  7. Запускается цикл while, который выполняется до тех пор, пока j<n и k=0.
  8. Внутри цикла инициализируется sm1 как сумма элементов a[i,j] для i в диапазоне от 1 до m.
  9. Затем p инициализируется как j+1 и цикл while повторяется до тех пор, пока p<=n и k=0.
  10. Внутри цикла инициализируется sm2 как сумма элементов a[i,p] для i в диапазоне от 1 до m.
  11. Если sm1 равно sm2, то k устанавливается в 1, j1 устанавливается в j и j2 устанавливается в p.
  12. Если sm1 не равно sm2, то p устанавливается равным p+1.
  13. Если k равно 0, то j увеличивается на 1.
  14. Выводится сообщение, указывающее, были ли найдены столбцы с одинаковой суммой.
  15. Если k равно 0, выводится сообщение о том, что столбцы с одинаковой суммой найдены.
  16. Затем выводится сообщение о том, что обмен этих столбцов был выполнен.
  17. Выводится окончательный вид матрицы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.5 из 5
Похожие ответы