- «Формирование основ финансовой грамотности дошкольников в соответствии с ФГОС ДО»
- «Патриотическое воспитание в детском саду»
- «Федеральная образовательная программа начального общего образования»
- «Труд (технология): специфика предмета в условиях реализации ФГОС НОО»
- «ФАООП УО, ФАОП НОО и ФАОП ООО для обучающихся с ОВЗ: специфика организации образовательного процесса по ФГОС»
- «Специфика работы с детьми-мигрантами дошкольного возраста»
- «Нормативно-правовое обеспечение работы социального педагога образовательного учреждения»
- «Организационные аспекты работы педагога-психолога ДОУ»
- «Ранний детский аутизм»
- «Специальная психология»
- «Психолого-педагогическое сопровождение процесса адаптации детей-мигрантов в образовательной организации»
Свидетельство о регистрации
СМИ: ЭЛ № ФС 77-58841
от 28.07.2014
- Бесплатное свидетельство – подтверждайте авторство без лишних затрат.
- Доверие профессионалов – нас выбирают тысячи педагогов и экспертов.
- Подходит для аттестации – дополнительные баллы и документальное подтверждение вашей работы.
в СМИ
профессиональную
деятельность
Транспонирование матрицы на языке Паскаль
ФИО автора: Трофимов Виктор Геннадьевич
Место работы: ГКООУ санаторная школа-интернат №28 г. Ростова-на-Дону
Должность: учитель информатики и ИКТ
ТРАНСПОНИРОВАНИЕ МАТРИЦЫ
Задача: дана матрица K[X,Y], значения X и Y вводятся пользователем (не более 10), матрица заполняется случайными целыми числами. Сформировать транспонированную матрицуP, вывести её на экран.
Кроме владения языком программирования, вам потребуются следующие знания: двумерные массивы, циклы, вложенные циклы и небольшое понимание декартовой системы координат.
Для решения этой задачи нам потребуются двумерные массивы, k и p, при этом массив k будет служить массивом-источником матрицы, массив p - получателем.
При работе с двумерными матрицами очень часто программисты путают значения осей x и y, для избегания такой путаницы достаточно представить трансформированную декартову систему координат, где точка 0 будет находиться в левом верхнем углу, ось X - вертикальная, ось Y - горизонтальная. Чёткое понимание подобной модели даст преимущество в написании программы и позволит не путаться между счётчиками цикла i,j.
Декартова система координат:
О с ь Y | 6 | ||||||
5 | |||||||
4 | |||||||
3 | |||||||
2 | |||||||
1 | |||||||
0 | 1 | 2 | 3 | 4 | 5 | 6 | |
Ось X |
Система координат для работы с массивами:
Ось Y / j | |||||||
О с ь X / i | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
1 | |||||||
2 | |||||||
3 | |||||||
4 | |||||||
5 | |||||||
6 |
Опираясь на систему координат с измененными осями X и Y нам не составит труда проконтролировать работу вложенного цикла (с которым обычно и происходит путаница при работе с двумерными массивами).
Идея проста. Определяем двумерный массив размерностью X, Y, заносим случайные числа от -128 до +127 и следующим же шагом транспонируем матрицу.
Сама программа реализует следующее:
1. Запрашиваем у пользователя значенияX и Y
2. Если хоть одно значение больше 10, то присваиваем ему 10.
3. С помощью вложенного цикла заполняем массив k случайными числами.
4. Выводим на экран массив k для контроля.
5. Транспонируем массив, одновременно передавая значения в массив p.
6. Выводим результат на экран.
7. Готово!
Ниже привожу блоки программы с пояснением:
program transponirovanie; // название программы
uses crt;// библиотека для использования процедур очистки экрана и
// финального ожидания нажатой клавиши
var k: array [1..10, 1..10] of shortint;// объявление первого массива
p: array [1..10, 1..10] of shortint;// объявление второго массива
x, y, i,j: byte;// переменные, нужные нам для ввода
// пользователем размерности массива
// и для счётчиков цикла
Для массивов взяты значения типаshortint, позволяющие указать данные в диапазоне от -128 до +127, целые числа. Для размерности массива и счётчиков цикла достаточно значения типа byte, так как даже в максимальном случае у нас получится всего 10 итераций для любого из циклов.
begin// Начало программы
clrscr;// Очистка экрана
randomize;// Активация генератора случайных чисел
В этом блоке вводятся значения с клавиатуры - X и Y, после чего выполняется проверка. ЕслиX или Y больше 10, то им присваивается максимально возможноей значение - 10.
write('Введите размер матрицы (X xY), не больше 10 ');
readln(x, y);
if (x > 10) then x := 10;
if (y > 10)then y := 10;
Заполнение массива. Не забываем, что x - «подправленная» ось нашей системы координат, направлена слева-сверху вниз. Y - горизонтальная ось, увеличение происходит слева-направо.
for i := 1 to x do
for j := 1 to y do
begin
k[i, j] := -128 + random(256);// Генератор случайных чисел, который формирует число
// от -128 до +127 (минимальный random(256) может
// вернуть число 0, а максимальный число 255)
gotoxy(j * 5, 1 + i);// Позиция на экране для вывода значения
writeln(k[i,j]);// Вывод массива для контроля
end;
Здесь выполняется транспонирование матрицы. Всё просто - меняем оси местами, «вращая» массив на 90 градусов по часовой стрелке. Это достигается путём замены счётчиков цикла i (ось x в исходном массиве) на j (ось y в исходном массиве). Вообразите шахматную доску с расставленными фигурами и «поверните» её на девяносто градусов, тогда стоявшие вверху фигуры окажутся расположены на правой линии, второй сверху ряд - на второй справа линии и так далее. В приведенном коде происходит то же самое.
(Труднее будет перевернуть матрицу на заданное количество градусов, допустим, 45 по часовой, или 30 против часовой. Некоторое подобие алгоритма применяется в игре тетрис, а более сложные его формы - практически во всех современных играх или программах, работающих с фото- видеоматериалами).
for i := 1 to x do
for j := 1 to y do
p[j, i] := k[i, j];
Вывод получившегося транспонированного массива. Формирование позиций на экране для вывода значений происходит путём расчёта (j * 5, 2 + x + i), ось y, формируемая формулой 2 + x + i, всегда будет ниже, чем предыдущий вывод исходного массива.
for i := 1 to y do
for j := 1 to x do
begin
gotoxy(j * 5, 2 + x + i);
writeln(p[i, j]);
end;
readkey;// Ожидания нажатия клавиши
end.// Наконец, конец программы!
Трудность алгоритма заключается именно в определении осей массива и умении программиста сориентироваться, переопределив оси X и Y так, чтобы они подходили для обработки в циклах for. Вот и всё :)
Удачи!
Адрес публикации: https://www.prodlenka.org/metodicheskie-razrabotki/86831-transponirovanie-matricy-na-jazyke-paskal


БЕСПЛАТНО!
Для скачивания материалов с сайта необходимо авторизоваться на сайте (войти под своим логином и паролем)
Если Вы не регистрировались ранее, Вы можете зарегистрироваться.
После авторизации/регистрации на сайте Вы сможете скачивать необходимый в работе материал.
- «Специфика классного руководства в начальной школе»
- «Содержание и методы преподавания общеобразовательных дисциплин «Русский язык» и «Литература» по ФГОС СПО»
- «Реализация ФГОС НОО в части учебного предмета «Труд (технология)»
- «Реабилитация и абилитация детей и подростков с ОВЗ и детей-инвалидов»
- «Профилактика выгорания и вторичной травматизации специалистов, работающих с кризисными состояниями»
- «Цифровая образовательная среда: особенности организации учебного процесса в соответствии с ФГОС»
- Образовательные технологии и методики обучения основам безопасности жизнедеятельности
- Обучение детей с ограниченными возможностями здоровья в общеобразовательной организации
- Педагогика и методика преподавания технологии
- Теория и методика обучения астрономии в образовательной организации
- Теория и методика преподавания основ безопасности жизнедеятельности
- Профессиональная деятельность педагога-психолога в образовательной организации
Чтобы оставлять комментарии, вам необходимо авторизоваться на сайте. Если у вас еще нет учетной записи на нашем сайте, предлагаем зарегистрироваться. Это займет не более 5 минут.