Программирование >>  Динамические структуры данных 

1 ... 7 8 9 [ 10 ] 11 12 13 ... 38


2) сумму элементов массива, расположенных до последнего положительного элемента.

Сжать массив, удалив из него все элементы, модуль которых находится в интервале [а, Ь]. Освободившиеся в конце массива элементы заполнить нулями.

Вариант 6

в одномерном массиве, состоящем из п вещественных элементов, вычислить:

1) минимальный элемент массива;

2) сумму элементов массива, расположенных между первым и последним положительными элементами.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, равные нулю, а потом - все остальные.

Вариант 7

в одномерном массиве, состоящем из п целых элементов, вычислить:

1) номер максимального элемента массива;

2) произведение элементов массива, расположенных между первым и вторым нулевыми элементами.

Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в нечетных позициях, а во второй половине - элементы, стоявшие в четных позициях.

Вариант 8

в одномерном массиве, состоящем из п вещественных элементов, вычислить:

1) номер минимального элемента массива;

2) сумму элементов массива, расположенных между первым и вторым отрицательными элементами.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом - все остальные.

Вариант 9

в одномерном массиве, состоящем из п вещественных элементов, вычислить:

1) максимальный по модулю элемент массива;

2) сумму элементов массива, расположенных между первым и вторым положительными элементами.

Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных.

Вариант 10

в одномерном массиве, состоящем из п целых элементов, вычислить: 1) минимальный по модулю элемент массива;

2) cjoMy модулей элементов массива, расположенных после первого элемента, равного нулю.

Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине - элементы, стоявшие в нечетных позициях.

Вариант 11

в одномерном массиве, состоящем из п вещественных элемейтов, вычислить:

1) номер минимального по модулю элемента массива;

2) сумму модулей элементов массива, расположенных после первого отрицательного элемента.

Сжать массив, удалив из него все элементы, величина которых находится в интервале [а, Ь]. Освободившиеся в конце массива элементы заполнить нулями.

Вариант 12

в одномерном массиве, состоящем из п вещественных элементов, вычислить:

1) номер максимального по модулю элемента массива;

2) сумму элементов массива, расположенных после первого положительного элемента.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых лежит в интервале [а, Ь], а потом - все остальные.

Вариант 13

в одномерном массиве, состоящем из п вещественных элементов, вычислить:

1) количество элементов массива, лежащих в диапазоне от А до В;

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

Вариант 14

в одномерном массиве, состоящем из п вещественных элементов, вычислить:

1) количество элементов массива, равных 0;

2) сумму элементов массива, расположенных после минимального элемента. Упорядочить элементы массива по возрастанию модулей элементов.

Вариант 15

в одномерном массиве, состоящем из п вещественных элементов, вычислить:

1) количество элементов массива, больших С;

2) произведение элементов массива, расположенных после максимального по модулю элемента.

Преобразовать массив таким образом, чтобы сначала располагались все отрицательные элементы, а потом - все положительные (элементы, равные О, считать положительными).



Вариант 16

в одномерном массиве, состоящем из п вещественных элементов, вычислить:

1) количество отрицательных элементов массива;

2) сумму модулей элементов массива, расположенных после минимального по модулю элемента.

Заменить все отрицательные элементы массива их квадратами и упорядочить элементы массива по возрастанию.

Вариант 17

в одномерном массиве, состоящем из п целых элементов, вычислить:

1) количество положительных элементов массива;

2) сумму элементов массива, расположенных после последнего элемента, равного нулю.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом - все остальные.

Вариант 18

в одномерном массиве, состоящем из п вещественных элементов, вычислить:

1) количество элементов массива, меньших С;

2) сумму целых частей элементов массива, расположенных после последнего отрицательного элемента.

Преобразовать массив таким образом, чтобы сначала располагались все элементы, отличающиеся от максимального не более чем на 20%, а потом - все остальные.

Вариант 19

в одномерном массиве, состоящем из п вещественных элементов, вычислить:

1) произведение отрицательных элементов массива;

2) сумму положительных элементов массива, расположенных до максимального элемента.

Изменить порядок следования элементов в массиве на обратный.

Вариант 20

в одномерном массиве, состоящем из п вещественных элементов, вычислить:

1) произведение положительных элементов массива;

2) сумму элементов массива, расположенных до минимального элемента.

Упорядочить по возрастанию отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах.

СЕМИНАР 4 Двумерные массивы

Теоретический материал: с. 61-63.

Двумерный массив представляется в С++ как массив, состоящий из массивов. Для этого при описании в квадратных скобках указывается вторая размерность. Если массив определяется с помощью операторов описания, то обе его размерности должны быть константами или константными выражениями, поскольку инструкции по выделению памяти формируются компилятором до выполнения программы. Например:

int а[3][5]: Целочисленная матрица из 3 строк и 5 столбцов

Массив хранится по строкам в непрерывной области памяти:

3 з а а а а а а а а а, a а а, I --- 0-я строка -- I -- 1-я строка - - 2-я строка -

Строки массива ничем не отделены одна от другой, то есть прямоугольной матрицей двумерный массив является только в нашем воображении. В памяти сначала располагается одномерный массив а[0], представляющий собой нулевую строку массива а, затем - массив а[1], представляющий собой первую строку массива а, и т. д. Количество элементов в каждом из этих массивов равно длине строки, то есть количеству столбцов в матрице. При просмотре массива от начала в первую очередь изменяется правый индекс (номер столбца).

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

ВНИМАНИЕ --

Первый индекс всегда воспринимается как номер строки, второй - как номер столбца, независимо от имени переменной.



Можно обратитыя к элементу массива и другими способами: *(*(а + i) + j) или *(a[i] + j). Они приведены для лучшего понимания механизма индексации, поскольку здесь в явном виде записаны те же действия, которые генерируются компилятором при обычном обращении к массиву. Рассмотрим их подробнее.

Допустим, требуется обратиться к элементу, расположенному на пересечении второй строки и третьего столбца - а[2][3]. Как и для одаомерных массивов, имя массива а представляет собой константный указатель на начало массива. В данном случае это массив, состоящий из трех массивов. Сначала требуется обратиться ко второй строке массива, то есть одномерному массиву а[2]. Для этого надо прибавить к адресу начала массива смещение, равное номеру строки, и выполнить разадресацию:*(а + 2 )М1апомним, что при сложении указателя с константой учитывается длина адресуемого элемента, поэтому на самом деле прибавляется число 2, умноженное на длину элемента, то есть 2 * (5 * si zeof( int)), поскольку элементом является строка, состоящая из 5 элементов типа i nt.

Далее требуется обратиться к третьему элементу полученного массива. Для получения его адреса опять применяется сложение указателя с константой 3 (на самом деле прибавляется 3 * sizeof(int)), а затем применяется операция разыменования для получения значения элемента: *(*(а + 2) + 3).

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

int а[3][5] = { 1. 2. 1. 3. 5. 2. 3. 4. 5. 1. 1. 3. 2. 6. 1 }:

определяет матрицу со следующими значениями элементов:

12 13 5

2 3 4 5 1

1 3 2 6 1

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

int а[3][5] - {{1. 1}. {1. 1}. {1. 1}}:

Остальные элементы массива обнуляются.

При явном задании хотя бы одного инициализирующего значения для каждой строки количество строк массива можно не задавать; память будет выделена под столько строк, сколько серий значений в фигурных скобках указано в списке, например:

int а[][5] = {{1. 1. 7. 7. 7}. {L 1. 0}. {1. 1. 2. 2. 2}}:

Начало if

1 Ввод массива / L-


njpos el++

s/= nrow * ncol I Выводе 7

Конец

См. с. 59, где приведен аналогичный разбор для одномерных массивов.

Рис. 4.1. Блок-схема алгоритма решения задачи 4.1

Задача 4.1. Среднее арифметическое и количество положительных элементов

Написать программу, которая для целочисленной матрицы 10 X 20 определяет среднее арифметическое ее элементов и количество положительных элементов в каждой строке.

Алгоритм решения этой задачи очевиден. Для вычисления среднего арифметического элементов массива требуется найти их общую сумму, после чего разделить ее на количество элементов. Порядок просмотра массива (по строкам или по столбцам) роли не играет. Определение количества положительных элементов каждой строки требует просмотра матрицы по строкам. Обе величины вычисляются при одном просмотре матрицы. Блок-схема этого алгоритма приведена на рис. 4.1.



1 ... 7 8 9 [ 10 ] 11 12 13 ... 38

Чертежи и конструкция механизма подъема кровати. Типовые проекты модульных зданий и цены Дорхан Северо-Запад.
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика