Постановка задачи
Задана матрица, состоящая из 6 строк и 7 столбцов. Поменять местами элементы первого и последнего столбца. Элементы матрицы – целые числа.
Таблица спецификаций глобальных переменных
Имя |
Назначение |
Тип |
ОДЗ |
M |
Матрица |
Целые числа |
От 1 до 30 |
К |
Количество строк матрицы |
Целое число |
От 1 до 6 |
N |
Количество столбцов матрицы |
Целое число |
От 1 до 7 |
С |
Вспомогательная переменная |
Целое число |
От 1 до 4 |
I,J |
Индексные переменные |
Целые числа |
От 1 до 7 |
Таблица спецификаций процедур и функций
Имя |
Назначение |
Параметры |
Rus |
Функция перекодировки ANSI– строки в ASCII- строку |
Mes – параметр значение, преобразуемая строка |
menu |
Вывод меню |
|
input_validation |
Ввод элемента матрицы с проверкой |
elem – параметр переменная, вводимый элемент |
review |
Вывод матрицы |
matrix1 - параметр значение, имя матрицы |
exchange |
Обмен местами двух элементов матрицы |
elem_1,elem_2 - параметры переменные, элементы матрицы |
Блок-схема алгоритма решения задачи
Тесты
Тест 1
Исходная матрица
1 2 3 4 5
6 7 8 9 1
2 3 4 5 6
Результат
5 2 3 4 1
1 7 8 9 6
6 3 4 5 2
Тест 2
Исходная матрица
1 2 3
6 7 8
2 3 4
5 6 7
Результат
3 2 1
8 7 6
4 3 2
7 6 5
Листинг программы
program Pr1;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
Tmatrix=array[1..6,1..7] of integer;
var
matrix:Tmatrix;
c,i,j:integer;
m,n:integer;
{функция перекодировки ANSI- строки в ASCII- строку,
позволяет выдавать сообщения в консольном приложении на русском языке}
function Rus(mes:string):string;
var h:byte;
begin
for h:=1 to length(mes) do
case mes[h] of
'А'..'п':mes[h]:=Chr(Ord(mes[h])-64);
'р'..'я':mes[h]:=Chr(Ord(mes[h])-16);
end;
rus:=mes;
end;
{----------------Выводим меню на экран -----------}
procedure menu;
begin
writeln(rus('1-Ввод'));
writeln(rus('2-Вывод'));
writeln(rus('3-Решение'));
writeln(rus('0-Выход'));
write(rus('Ваш выбор->'));
end;
{------------- Выводим матрицу на экран ----------}
procedure review(matrix1: Tmatrix);
begin
for i:=1 to m do
for j:=1 to n do
begin
write(matrix[i,j]:6);
if j=n then writeln;
end;
end;
{------------- Вводим элемент матрицы --------------}
procedure input_validation(var elem:integer);
var st:string[3];
code:integer;
begin
repeat
readln(st);
val(st,elem,code);
until(code=0);
end;
{----------- Меняем местами элементы ---------------}
procedure exchange(var elem_1,elem_2:integer);
var rab:integer;
begin
rab:=elem_1;
elem_1:=elem_2;
elem_2:=rab;
end;
{-----------Основная программа ---------------------}
begin
repeat
menu;
readln(c);
case c of
1:begin
write(rus('количесво строк m='));readln(m);
write(rus('количесво столбцов n='));readln(n);
writeln(Rus('Вводим матрицу'));
for i:=1 to m do
for j:=1 to n do
input_validation(matrix[i,j]);
end;
2:review(matrix);
3:begin
for i:=1 to m do
exchange(matrix[i,1],matrix[i,n]);
end;
end;
until c=0;
end.
Задача 2 Работа с массивами записей
