КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Решение. Определение и инициализация двумерных массивов
Операции с массивами Определение и инициализация двумерных массивов Общий формат определения одномерного массива в стиле стандарта С89 имеет следующий: <α> <b>[<γ1>][<γ2>] = <μ>; Здесь α- тип элементов, хранящихся в массиве; b - имя массива, [..] – оператор индексирования; γ1 – константное выражение, определяющее количество строк в двумерном массиве, а γ2 - константное выражение, определяющее количество столбцов в двумерном массиве. Конструкция «= <μ>» используется для инициализации массива; μ – список инициализаторов. Приведем пример определения двумерного массива. #define MROW 2 int main(void) В этом примере содержится определение двумерного массива m, в котором может храниться не более 2 строк и не более трех столбцов. Элементы массива инициализированы во время его определения. Первая строка массива содержит числа 1, 3 и 5, а вторая строка - 2, 4 и 6. Элементы массива имеют тип double. Все операции с элементами массива выполняются поэлементно. Приведем два примера. Пример 1. Копирование одномерных массивов. Постановка задачи. Даны два массива одинаковых размеров x1 и x2. Скопировать часть n элементов массива x1 в массив x2. Решение. Организуем арифметический цикл, рассчитанный на n повторений. Поэлементно будем копировать элементы массива x1 в массив x2. Программный код, представленный ниже, решает рассматриваемую задачу. #define MSIZE 20 {
В рассматриваемом коде «n» элементов массива x1 копируется в массив x2. Если ввести значение «n», равное MSIZE, то весь массив x1, будет скопировани в массив x2. Заметим, что инстукция x1 = x2; в связи с тем, x1 – константный указатель. Пример 2. Обработка двумерных массивов. Постановка задачи. В двумерном массиве, хранятся данные типа double. Массив состоит из nr строк и nc столбцов. Требуется вычислить две суммы summa_row и summa_col. Здесь summa_row - сумма элементов в каждой строке, а summa_col – сумма элементов для каждого столбца. При обращении к элементам двумерного массива следует использовать два индекса, причем каждый из индексов должен записываться в своих индексных скобках. Отметим, левый индекс определяет номер строки, в которй находится элемент массива, а правый – номер столбца. Например, если m – матрицы, то m[1][2] – элемент этой матрицы, находящийся в строки с индексом 1 и столбце с индексом 2. Каждая из сумм summa_row и summa_col должна вычисляться отдельно с использованием вложенных циклов. Дело в том, что при вычислении суммы summa_row матрица должна просматриваться по строкам, а при вычислении summa_col матрица должна просматриваться по стобцам. Алгоритм просмотра по строкам реализуется с помощью вложенных циклов. Причем: · внешний цикл должен фиксировать индекс строки, · внутренний цикл - изменять индекс столбца. В алгоритме просмотра по столбцам наоборот: · внешний цикл должен фиксировать индекс столбца, · внутренний цикл – изменять индекс строки. #define MROW 5 int main(void) int nc; double m[MROW][MCOL];
Дата добавления: 2014-01-06; Просмотров: 366; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |