29)Алгоритмы ввода вывода одномерного массива. Алгоритм ввода и вывода двумерного массива
Для считывания, вывода на экран и обработки двумерных массивов необходимо использовать вложенные циклы. Первый цикл – по первому индексу (то есть по всем строкам), второй цикл – по второму индексу, то есть по всем элементам в строках (столбцам). Например, вывести на экран двумерный массив в виде таблицы, разделяя элементы в строке одним пробелом можно следующим образом:
А считать двумерный массив с клавиатуры можно при помощи еще более простого алгоритма (массив вводится по строкам, то есть в порядке, соответствующему первому примеру):
Обработка двумерного массива
Обработка двумерных массивов производится аналогичным образом. Например, если мы хотим записать в массив таблицу умножения, то есть присвоить элементу A[i][j] значение i * j, это можно сделать следующим образом при помощи вложенных циклов:
for (i = 0; i < n; ++i)
{
for (j = 0; j < m; ++j)
{
A[i][j] = i * j;
}
}
Рассмотрим более сложную задачу и несколько способов ее решения. Пусть дан квадратный двумерный массив int A[n][n]. Необходимо элементам, находящимся на главной диагонали проходящей из левого верхнего угла в правый нижний (то есть тем элементам A[i][j], для которых i==j) присвоить значение 1, элементам, находящимся выше главной диагонали – значение 0, элементам, нахощящимся ниже главной диагонали – значение 2. То есть получить такой массив (пример для n==4):
1 0 0 0
2 1 0 0
2 2 1 0
2 2 2 1
Рассмотрим несколько способов решения этой задачи. Элементы, которые лежат выше главной диагонали – это элементы A[i][j], для которых i<j, а для элементов ниже главной диагоналиi>j. Таким образом, мы можем сравнивать значения i и j и по ним определять значение A[i][j]. Получаем следующий алгоритм:
for (i = 0; i < n; ++i)
{
for (j = 0; j < n; ++j)
{
if (i < j)
{
A[i][j] = 0;
}
else if (i > j)
{
A[i][j] = 2;
}
else
{
A[i][j] = 1;
}
}
}
Данный алгоритм плох, поскольку выполняет одну или две инструкции if для обработки каждого элемента. Если мы усложним алгоритм, то мы сможем обойтись вообще без условных инструкций.
Сначала заполним главную диагональ, для чего нам понадобится один цикл:
for (i = 0; i < n; ++i)
{
A[i][i] = 1;
}
Затем заполним значением 0 все элементы выше главной диагонали, для чего нам понадобится в каждой из строк с номером i присвоить значение элементам A[i][j] для j=i+1, ..., n-1. Здесь нам понадобятся вложенные циклы:
for (i = 0; i < n; ++i)
{
for (j = i + 1; j < n; ++j)
{
A[i][j] = 0;
}
}
Аналогично присваиваем значение 2 элементам A[i][j] для j=0, ..., i-1:
При вводе массива необходимо последовательно вводить 1-й, 2-й, 3-й и т.д.
элементы массива, аналогичным образом поступить и при выводе. Следовательно,
необходимо организовать цикл.
Блок-схемы алгоритмов ввода элементов массива изображены на рис. 6.3-6.4.
Рис 6.3 Алгоритм ввода массива Рис. 6.4. Алгоритм ввода массива
с использованием цикла с использованием
с предусловием безусловного цикла
Как видно, безусловный цикл удобно использовать для обработки всего
массива, и в дальнейшем при выполнении таких операций будем применять
именно его. Вывод массива организуется аналогично вводу.
Рассмотрим несколько примеров обработки массивов. Алгоритмы, с
помощью которых обрабатывают одномерные массивы, похожи на обработку
последовательностей (вычисление суммы, произведения, поиск элементов по
определенному признаку, выборки и т. д.). Отличие заключается в том, что в
массиве одновременно доступны все его компоненты, поэтому становится
возможной, например, сортировка его элементов и другие, более сложные
преобразования.
Yandex.RTB R-A-252273-3
- 3)Система счисления. Представление чисел в различных системах. Перевод целых чисел из одной в другую.
- 4)Высказывания и предикаты. Алгебра, высказывание, предикат, булевское, высказывание, логические функции.
- 5)Аксиомы алгебры предикат.
- 6)Информационно-логическая задача(опр)
- 7)Кол-венное измерение инфы. Кол-во инфы. Мера инфы. Мера р. Хартли. Мера к. Шенона
- 8)Объект и предмет информатики
- 9)Структура современной информатики
- 10)Структура программного обеспечения
- 11)Системы програмирования
- 12)Операционные системы
- 13)Понятие алгоритма. Св-ва. Типы. Виды представления алгоритмов. Этапы разработки программы
- 14) Объектно-ориентированное программирование на примере vba.
- 15)Основные понятия объектно-ориентированное программирование
- 16)Объекты. Методы. Свойства. События
- 17)Основы программирования на языке vba
- 2.3. Выражения
- 2.3.1. Виды операций
- 2.3.2. Приоритет выполнения операций
- 18)Алфавит. Комментарии. Имена переменных. Операция присвоения. Математические операции. Операции присвоения. Логические операции.
- 19)Процедуры ,процедуры-функции. Общие процедуры .Процедуры обработки событий .Объявление переменных
- 20) Встроенные функции (математические)
- 21)Условный оператор if…then
- 22)Операторы передачи безусловного перехода по метке goto
- 21)Условный оператор if…then
- 23)Операторы цикла
- 24)Создание процедуры(функции) вызов процедуры
- 25)Работа со строковыми переменными
- 26)Ввод-вывод в vba : inputbox, msgbox,объекты range, cells
- 27)Некоторые приемы оптимизации программ
- 28)Опред одномерного и двумерного массива. Декларация одномерного и двумерного масива в vba
- 29)Алгоритмы ввода вывода одномерного массива. Алгоритм ввода и вывода двумерного массива
- 30)Основные сведения о динамичном массиве.
- 31)Сортировка массива методом пузырька массива
- 32)Сортировка масива методом нахождения минимального элемента массива
- 33)Экранная форма
- 34)Экранная форма( св-ва, методы, события)
- 36)Эл. Кнопка(св-ва, события)
- 37)Элемент Текстовое поле (свойства)
- 38)Эл надпись(св-ва)
- 39)Элемент рамка
- 40)Элемент флажок
- 41)Эл переключатель(св-ва)
- 42)Элемент рисунок
- 43) Размещение элементов управления в форме или на рабочем листе
- 43)Размещение эл упр в форме или на раб листе
- 48)Задачи на измерение единицы измерения информации
- 49)Задачи бутлеровской алгебры и размеры пениса мух
- 52,3) Построение графиков 2 порядка на плоскости гиперболоид (однополосный, двухполюсный)
- 52,4) Построение графиков 2 порядка на плоскости конус 2 порядка
- 59) Транспонирование матрицы