Алгоритм заполнения последовательными числами матрицы размера M * N по спирали, по часовой стрелке.
M=3 N =4
1 2 3 4 5
12 13 14 15 6
11 10 9 8 7
Идея решения:
Заполним последовательными числами верхнюю строку – это задача 1310
Заполним последовательными числами правый ряд – это задача 1311
Заполним последовательными числами нижнюю строку – это задача 1313
Заполним последовательными числами левый ряд – это задача 1313
Повторим все эти действия для незаполненной матрицы – это задача 1314
Далее описаны алгоритмы и последовательные шаги решения 5 задач: 1310-1314
Следует внимательно, последовательно перенести эти шаги на Фортран.
В этом случае Вы получите решения всех задач БЫСТРО.
Это упражнение на скорость переноса ГОТОВОГО алгоритма.
задача 1310
Из входного файла читаются 2 числа M и N.
В матрице размера Mстрок * Nстолбцов (1<= M, N <=15)
заполнить первую строку последовательными числами
Для этого скопируйте Задачу, например 1100 и отредактируйте заголовок.
Добавьте “целый” Массив для матрицы.
Размеры массива выберите ~ в 1.5 раза больше, чем указаны в условиях задачи.
Введите переменные:
- число строк массива,
- число столбцов массива
- количество чисел в матрице
Дальше, нам необходимо ставить последовательные числа 1, 2, 3 … в ячейки матрицы:
- Число – текущее число, которое надо поставить в матрицу
- Строка = Индекс Строки матрицы, в которой стоит заполняемая ячейка
- Столбец = Индекс Столбца матрицы, в котором стоит заполняемая ячейка
- КЧМ - общееколичество чисел в заполненной в матрице
Введите границы заполняемой области матрицы (эти границы Вам, на самом деле, понадобятся на последующих шагах, но Вы вводите их сейчас – т.к. упражнение на перенос алгоритма!)
Прав – индекс правого столбца незаполненной области
Лев – индекс левого -----------“ “ --------------------------
Верх – индекс верхней незаполненной строки
Низ – индекс нижней -------“ “ -------- строки
3. Нам необходима инициализация (начальная установка) введенных переменных.
Размеры матрицы – читаем из файла.
Прав, Лев, Верх, Низ - через уже определенные переменные.
КЧМ - через уже определенные переменные.
Число – текущее число для постановки в матрицу, в начальный момент = числу, которое мы уже поставили в матрицу = 0
Строка = Верх ! это индексы начальной ячейки
Столбец = Левый – 1 ! это индексы начальной ячейки
4. Организуем цикл заполнения строки (будем проверять, что нам есть ещё что ставить в матрицу: Число < КЧМ - это поможет нам не вылезать за границы и не поставить ничего лишнего)
НЦ пока (Число < КЧМ И Столбец<Прав) ! идем направо
Столбец = Столбец+1
Увеличиваем Число
Заполняем Матрицу: ячейка матрицы = Число
КЦ
Увеличиваем Верх, так как верхний ряд заполнен
Скопируйте файл input.1310 в Вашем каталоге, как input.txt
Проверьте: Ваша программа должна компилироваться и выполняться!
6. Выведите заполненную матрицу на печать.
Для этого скопируйте из программы F3_1.for :
Вызов подпрограммы вывода матрицы – CALL OUT_Arr( ….. ) ,
и саму подпрограмму вывода.
Отредактируйте вставки:
Поставьте в блоке описания размеры матрицы такие же, как в программе.
!!! Обратите внимание: в учебной программе была ошибка. У Вас должен быть исправленный вариант (как исправляли на занятие).
7. Проверьте правильность работы программы с выводом на монитор.
8. Отредактируйте программу:
И уберите все «лишние» выводы.
Проверьте правильность работы программы с помощью СЕТЕВОЙ тестирующей системы.
9. Покажите текст правильно работающей программы для проверки СТИЛЯ написания программы и таблицу проверки тестирующей системы.
10. Сдайте проверенную (исправленную) правильную программу СЕТЕВОЙ тестирующей системе.
задача 1311
Из входного файла читаются 2 числа M и N.
В матрице размера Mстрок * Nстолбцов (1<= M, N <=15)
заполнить первую строку последовательными числами.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.