Темы для предварительной проработки. · операторы циклаязыка c

  • Операторы циклаязыка C. Вложенные циклы.
  • Условный оператор языка C.
  • Матрици.

Задание

Создать квадратную матрицу целых чисел размером 9х9. В индивидуальных заданиях указано, какую обработку матрицы требуется выполнить.

Если по условию задания матрицу следует заполнить случайными числами, рекомендуем выбирать эти числа из диапазона 0 – 99. Если по условию задания в матрицу следует записатьЛП — линейную последовательность чисел, имеется в виду последовательность: 1, 2, 3, … Программу разработатьсиспользованием меню!!!

Варианты индивидуальных заданий

Вариант Содержание задания Иллюстрация
Заполнить матрицу ЛП, от левого верхнего угла по диагонали: влево — вниз.
Заполнить секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей, ЛП, от левого верхнего угла вниз — вправо. Остаток матрицы заполнить нулями.
Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно побочной диагонали
Заполнить матрицу случайными числами. Отобразить симметрично относительно вертикальной оси секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей.
Заполнить матрицу случайными числами. Отобразить верхнюю половину матрицы на нижнюю зеркально симметрично относительно горизонтальной оси.
Заполнить секторы матрицы, которые лежат выше и ниже главной и побочной диагоналей, ЛП, от левого верхнего угла вниз — вправо. Остаток матрицы заполнить нулями.
Заполнить матрицу случайными числами. Отобразить главную и побочную диагонали симметрично относительно вертикальной оси.
Заполнить матрицу случайными числами. Разместить на главной диагонали суммы элементов, которые лежат на диагоналях, перпендикулярных к главной.
Заполнить секторы матрицы, которые лежат выше и ниже главной и побочной диагоналей ЛП, от левого верхнего угла вправо — вниз. Остаток матрицы заполнить нулями.
Заполнить матрицу случайными числами. Отобразить симметрично относительно горизонтальной оси секторы матрицы, которые лежат выше и ниже главной и побочной диагоналей.
Заполнить матрицу случайными числами. Развернуть матрицу на 180o.
Заполнить матрицу ЛП, от левого нижнего угла по диагонали: влево — вверх.
Заполнить секторы матрицы, которые лежат влево и вправо от главной и побочной диагоналей ЛП, от левого верхнего угла вправо — вниз. Остаток матрицы заполнить нулями.
Заполнить матрицу ЛП, от левого верхнего угла по диагонали: вправо — вверх.
Заполнить матрицу случайными числами. Отобразить главную и побочную диагонали симметрично относительно горизонтальной оси.
Заполнить матрицу ЛП, от правого верхнего угла по диагонали: влево — вниз.
Заполнить матрицу случайными числами. Развернуть матрицу на 90o против часовой стрелки.
Заполнить матрицу случайными числами. На побочной диагонали разместить суммы элементов, которые лежат на той же строке и столбце.
Заполнить матрицу случайными числами. На главной диагонали разместить суммы элементов, которые лежат на той же строке и том же столбце.
Заполнить матрицу случайными числами. Отобразить правую половину матрицы на левую зеркально симметрично относительно вертикальной оси.
Заполнить матрицу нулями, после чего заполнить диагонали матрицы ЛП от левого верхнего угла по спирали: вниз — вправо — вверх — влево.
Заполнить матрицу случайными числами. Отобразить левую половину матрицы на правую зеркально симметрично относительно вертикальной оси.
Заполнить матрицу нулями, после чего заполнить диагонали матрицы ЛП от центра по спирали: вниз — влево — вверх — вправо.
Заполнить матрицу случайными числами. Развернуть матрицу на 90o по часовой стрелке.
Заполнить матрицу нулями, после чего заполнить диагонали матрицы ЛП от центра по спирали: вниз — вправо — вверх — влево.
Заполнить матрицу случайными числами. Разбить матрицу на квадраты размером 3х3. В центре каждого квадрата поместить сумму остальных элементов квадрата.
Заполнить матрицу случайными числами. Отобразить матрицу симметрично относительно главной диагонали
Заполнить матрицу нулями, после чего заполнить диагонали матрицы ЛП от левого верхнего угла по спирали: вправо — вниз — влево — вверх.
Заполнить матрицу случайными числами. Отобразить нижнюю половину матрицы на верхнюю зеркально симметрично относительно горизонтальной оси.
Заполнить матрицу случайными числами. Разместить на побочной диагонали суммы элементов, которые лежат на диагоналях, перпендикулярных к побочной.
Заполнить нечетные диагонали, симметричные побочной, с левого верхнего угла заданнимобразом. Остаток матрицы заполнить нулями.
Заполнить главнуюи побочные диагонали матрицы ЛП начинаяс верхнего угла главной диагонали и останавливая заполнение в нижнемуглу побочной диагонали (срединную точку заполнявать один раз, если она есть). Остаток матрицы заполнить нулями.
Заполнить матрицуиз центра, распространяя ЛП вобестороны параллельно строкам и столбцам.
Заполнить матрицу ЛП по диагоналям, симметричным побочной, с левого верхнего угла заданнымобразом — на каждой из диагоналей числа однаковыевдоль нее.
Заполнить матрицу ЛП змейкой, начинаяеес левого верхнего угла матрицы вниз изаполняяее на следующем столбце в обратном направлении.
Заполнить матрицуслучайными числами. Отобразить левые частиглавнойи побочной диагоналей симметрично относительно вертикальной оси.
Заполнить матрицу ЛП змейкой, начинаяеес нижнего правого угла матрицывлево изаполняяее на следующей строке в обратном направлении.
Заполнить матрицуиз центра, распространяя ЛП во обе стороны параллельно главной и побочной диагоналям.
Заполнить матрицуслучайными числами. На срединных строкахи столбцах разместить суммы элементов, лежащихв соответствующихстрокахи столбцах.
Заполнить нечетные диагонали, симметричные главной, с правого верхнего угла заданнымобразом. Остаток матрицы заполнить нулями.

5. Пример решения задачи

Заполнить секторы матрицы, которые лежат выше и ниже главной и побочной диагоналей, ЛП, от левого верхнего угла вниз — вправо. Остаток матрицы заполнить нулями.

5.1. Разработка алгоритма решения

Если обозначим размерность матрицы как S, номер строкикак L, а номер столбцакак R, и (имея в виду, что реализация алгоритма будет выполнена на языке С) договоримся, что нумерация строк и столбцов будет начинаться с 0, то можно определить, что в строке с номером L ненулевые элементы в верхней частиматрицы лежат на столбцахс номерамиR1=L

Но можно несколько упростить алгоритм, обойдя вычисления граничных значений для каждого элемента и необходимости определения, в верхнюю или нижнюю часть матрицы ми попадаем. Обратим внимание на то, что для первой строки (L=0) R1=1, R2=S–2.

Для каждой следующей строкиR1 увеличивается на 1, аR2уменьшается на 1. .Когда пересекаем середину матрицы, то направление модификации изменяется на противоположное: теперь для каждой следующей строкиR1уменьшается на 1, аR2 увеличивается на 1. Признаком пересечения середины может быть условиеR1>R2, оно выполняется в момент пересечения. Схема алгоритма показана на рисунке.

Вместе с описанными выше переменнымиR1 и R2, , которые получают начальные значения для первой строки матрицы, ми вводим переменнуюddсначальным значением 1 — это то значение, которое будет модифицироватьR1 и R2 для каждойследующейстроки, ипеременную k— в которой будет значение текущего члена ЛП, начальное значение — 1 (блок 2). Далее организуются вложенные циклы. Во внешнем цикле перебираются строки (блок 3), а во внутреннем — столбцы матрицы (блок 4).

В каждой итерации внутреннего цикла номер столбца Rсравнивается с граничными значениями R1, R2 (блоки 5,6). Еслион лежит впределахот R1доR2, то текущему члену матрицы присваивается значенмеk— текущего члена ЛП, а потомkувеличивается на 1 (блок 7). Если нет, тотекущему членуприсваивается значения 0 (блок 8).

После выхода из внутреннего цикла модифицируются граничные значения:R1 увеличиваетсянаdd, аR2 уменьшатся наdd(блок 9). Напомним, чтоначальное значение dd=1. Когда выполняется условие R1>R2(блок 10) присваиваем ddзначение –1, далее модификация границ будет соответствовать правилам для нижней части матрицы.

После выхода из внешнего цикла, который начался в блоке 3, вновь организуются вложенные циклы перебора строк (блок 12) и столбцов (блок 13). В каждой итерации внутреннего цикла выводится значение одного элемента матрицы (блок 14), после выхода из внутреннего цикла начинается новая строка вывода (блок 15).

Рандомно подобранные статьи с сайта:

Уроки C++ с нуля / Урок #6 — Циклы For, While, Do while


Похожие статьи:

admin