русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Многомерные массивы


Дата добавления: 2015-08-31; просмотров: 894; Нарушение авторских прав


Многомерные массивы широко используются в статистике и математике, такие массивы имеют более одного измерения (индекса). Таким образом, двумерный массив представляет собой набор данных одинакового типа, в котором доступ к любому его элементу осуществляется по двум индексам: номеру строки и номеру столбца. Количество индексов определяет размерность массива. Размермассива – количество элементов в массиве, например двумерного, равно произведению числа строк на число столбцов. Двумерные массивы являются логической структурой данных удобной для решения задач связанных с обработкой величин зависящих от двух параметров.

Физически (в памяти ЭВМ) массив должен хранится как одномерный, т.к. память ЭВМ имеет линейную организацию, в которой для доступа к ячейке памяти используется один параметр – адрес. Поэтому при хранении двумерного массива в памяти компьютера осуществляется преобразование двухиндексной ссылки к линейной, допустим, при хранении по строкам так: адрес_элемента_аij = базовый_адрес + (i-1)*количество_эле­мен­тов_в_стро­ке + j.

В языках программирования элемент многомерного массива обозначается именем массива с индексами. Индексы представляют собой выражения любого скалярного типа, кроме вещественного. Обращаться к элементам массива можно в произвольном порядке, задавая значения индексов. Причем, первый индекс всегда нумерует строки, второй столбцы.

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

 

 

Рассмотрим пример алгоритма реализующего ввод двумерного массива по строкам. В этом примере элементы массива обрабатываются по строкам, т.е. в таком порядке: a11, a12, a13,..., a1m, a21, a22,...,a2m, ...Здесь для каждого значения счетчика внешнего цикла i,вложенный цикл выполняется заданное количество (m) раз. Поэтому тело вложенного цикла выполняется n* m раз.



Рассмотрим некоторые алгоритмы обработки двумерных массивов.

Определить сумму элементов в каждой строке массива А, содержащего n строк и m столбцов. Исходными данными для решения являются целочисленные переменные n и m, а также элементы массива А. Результатом решения будет одномерный массив S, содержащий столько элементов каково количество строк в массиве А. Для ввода всех элементов исходного массива нужно организовать цикл в цикле (вложенные циклы). Подобная же конструкция требуется и для обработки всех элементов массива. В соответствии с этим схема алгоритма может иметь вид.

Как видно из блок-схемы, внешний цикл (счетчик цикла переменная i) «перебирает» все строки массива, а внутренний цикл (счетчик цикла переменная j) суммирует все элементы каждой строки (сумма элементов каждой строки накапливается в соответствующих элементах одномерного массива S).

Определить min элемент в каждом столбце массива А, содержащего n строк и m столбцов. Исходными данными для решения являются целочисленные переменные n и m, а также элементы массива А. Результатом решения будут значения минимальных элементов для каждого столбца массива. Представим блок-схему алгоритма.

 

 

 

В данном алгоритме переменной Ме перед вложенным циклом присваивается очень большое значение для того, чтобы в цикле при первом же сравнении выполнялось условие, по которому переменной Ме присваивается значение первого элемента рассматриваемого столбца. Тело внешнего цикла заканчивается выводом номера столбца и значения минимального элемента в этом столбце.

 

Задание.

1. Разработать алгоритм и написать программу, реализующую вычисление произведения двух матриц (двумерных массивов). Элемент нового массива (произведения): Cij = Aik*Bkj

2. Разработать алгоритм и написать программу, реализующую вычисления сумм элементов столбцов матрицы с четными номерами.

3. Разработать алгоритм и написать программу, в результате выполнения которой строка с минимальным элементом матрицы поменяется местами со строкой с максимальным элементом матрицы.



<== предыдущая лекция | следующая лекция ==>
Конфигурируемая підсистема Configurable Subsystem | 


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.027 сек.