Работа с массивами - Pascal (80183)
Формулировка задачи:
Помогите решить задание, это не выполнимое задание.
Вариант 2
1. Поменять местами строки 5 и 6. Вывести получившийся массив на экран.
2. Поменять местами столбцы 3 и 4. Вывести получившийся массив на экран.
3. Изменить порядок элементов в строке 8 на обратный. Вывести по-лучившийся массив на экран.
4. Изменить порядок элементов в столбце 1 на обратный. Вывести по-лучившийся массив на экран.
5. Осуществить перестановку соседних элементов в 2ом столбце. Вы-вести получившийся массив на экран.
6. Обменять половины строки 3 местами. Вывести получившийся мас-сив на экран.
7. Транспонировать матрицу:
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6
7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8
Решение задачи: «Работа с массивами»
textual
Листинг программы
const n=8;
var
a:array[1..n,1..n] of integer;
i,j:integer;
procedure Swap(var a,b:integer);
var
t:integer;
begin
t:=a;a:=b;b:=t;
end;
procedure InitMatrix(b:boolean);
var
i,j,k:integer;
begin
for i:=1 to n do
for j:=1 to n do begin
k:=k+1;
if b then a[i,j]:=k else a[i,j]:=i;
end;
end;
procedure PrintMatrix;
var
i,j:integer;
begin
for i:=1 to n do begin
for j:=1 to n do write(a[i,j]:4);
writeln;
end;
end;
begin
writeln('1. Поменять местами строки 5 и 6. Вывести получившийся массив на экран.');
InitMatrix(false);
PrintMatrix;
for j:=1 to n do Swap(a[5,j],a[6,j]);
writeln('Полученная матрица:');
PrintMatrix;
readln;
writeln('2. Поменять местами столбцы 3 и 4. Вывести получившийся массив на экран.');
InitMatrix(true);
PrintMatrix;
for i:=1 to n do Swap(a[i,3],a[i,4]);
writeln('Полученная матрица:');
PrintMatrix;
readln;
writeln('3. Изменить порядок элементов в строке 8 на обратный. Вывести по-лучившийся массив на экран.');
InitMatrix(true);
PrintMatrix;
for j:=1 to n div 2 do Swap(a[8,j],a[8,n-j+1]);
writeln('Полученная матрица:');
PrintMatrix;
readln;
writeln('4. Изменить порядок элементов в столбце 1 на обратный. Вывести по-лучившийся массив на экран.');
InitMatrix(false);
PrintMatrix;
for i:=1 to n div 2 do Swap(a[i,1],a[n-i+1,1]);
writeln('Полученная матрица:');
PrintMatrix;
readln;
writeln('5. Осуществить перестановку соседних элементов в 2ом столбце. Вы-вести получившийся массив на экран.');
InitMatrix(false);
PrintMatrix;
for i:=1 to n-1 do if odd(i) then Swap(a[i,2],a[i+1,2]);
writeln('Полученная матрица:');
PrintMatrix;
readln;
writeln('6. Обменять половины строки 3 местами. Вывести получившийся мас-сив на экран.');
InitMatrix(true);
PrintMatrix;
for j:=1 to n div 2 do Swap(a[3,j],a[3,n div 2+j+n mod 2]);
writeln('Полученная матрица:');
PrintMatrix;
readln;
writeln('7. Транспонировать матрицу:');
InitMatrix(false);
PrintMatrix;
for i:=1 to n-1 do
for j:=i+1 to n do Swap(a[i,j],a[j,i]);
writeln('Полученная матрица:');
PrintMatrix;
readln;
end.
Объяснение кода листинга программы
- Инициализация переменной
a- двумерного массива размером 8x8, переменныхiиjдля циклов. - Процедура
Swapдля обмена значений переменных. - Процедура
InitMatrixдля заполнения массиваaчислами или последовательными значениями в соответствии с параметромb. - Процедура
PrintMatrixдля вывода массиваaна экран. - Инициализация массива
aи вывод исходного массива на экран. - Обмен элементов строк 5 и 6, вывод получившегося массива на экран.
- Аналогично обмен столбцов 3 и 4, вывод получившегося массива на экран.
- Изменение порядка элементов в строке 8 на обратный, вывод получившегося массива на экран.
- Аналогично изменение порядка элементов в столбце 1, вывод получившегося массива на экран.
- Перестановка соседних элементов во 2 столбце, вывод получившегося массива на экран.
- Обмен половин строки 3 местами, вывод получившегося массива на экран.
- Транспонирование матрицы (перестановка элементов, главная диагональ становится главной основной), вывод получившегося массива на экран.