Матрица: сдвиг - Pascal
Формулировка задачи:
Дaна матрица N*M, элементами которой являются целые числа и номер столбца К. Сдвинуть все столбцы с K-го по M-ый на один влево.
Решение задачи: «Матрица: сдвиг»
textual
Листинг программы
const nmax=20; var a:array[1..nmax,1..nmax] of integer; m,n,i,j,k:byte; x:integer; begin clrscr; repeat write('Количество строк до ',nmax,' n='); readln(n); until n in [1..nmax]; repeat write('Количество столбцов до ',nmax,' m='); readln(m); until m in [1..nmax]; writeln('Исходная матрица:'); for i:=1 to n do begin for j:=1 to m do begin a[i,j]:=random(20); write(a[i,j]:4); end; writeln; end; repeat write('Номер столбца от 2 до ',m,' k='); readln(k); until k in [2..m]; for i:=1 to n do begin x:=a[i,1]; for j:=1 to m-1 do a[i,j]:=a[i,j+1]; a[i,m]:=x; end; writeln('Сдвиг:'); for i:=1 to n do begin for j:=1 to m do write(a[i,j]:4); writeln; end; readln end.
Объяснение кода листинга программы
- Объявлены переменные: nmax, a, m, n, i, j, k, x.
- В цикле repeat-until пользователю предлагается ввести количество строк и столбцов для создания исходной матрицы.
- В цикле writeln выводится шаблон для ввода матрицы.
- В цикле for вычисляются значения элементов матрицы a.
- В цикле repeat-until пользователю предлагается ввести номер столбца для сдвига.
- В цикле for выполняется сдвиг элементов матрицы a.
- Выводится результат сдвига матрицы.
- Программа ожидает нажатия клавиши для завершения работы.