Решение задач. Array7-17

Приветствуем читателей нашего сайта! Сегодня мы с вами решим задачи Array7-17.
Array7-17. (Одномерные массивы: вывод элементов)
Array7°. Дан массив размера N. Вывести его элементы в обратном порядке.
Не забываем про то, что циклом for можно пробегать числа не только от меньших к большим, но от больших к меньшим.
Array8. Дан целочисленный массив размера N. Вывести все содержащиеся в данном массиве нечетные числа в порядке возрастания их индексов, а также их количество K.
Array9. Дан целочисленный массив размера N. Вывести все содержащиеся в данном массиве четные числа в порядке убывания их индексов, а также их количество K.
Array10. Дан целочисленный массив размера N. Вывести вначале все содержащиеся в данном массиве четные числа в порядке возрастания их индексов, а затем — все нечетные числа в порядке убывания их индексов.
Array11. Дан массив A размера N и целое число K (1 ≤ K ≤ N). Вывести элементы массива с порядковыми номерами, кратными K: AK, A2·K, A3·K, …. Условный оператор не использовать.
Array12. Дан массив A размера N (N — четное число). Вывести его элементы с четными номерами в порядке возрастания номеров: A2, A4, A6, …, AN. Условный оператор не использовать.
Array13. Дан массив A размера N (N — нечетное число). Вывести его элементы с нечетными номерами в порядке убывания номеров: AN, AN−2, AN−4, …, A1. Условный оператор не использовать.
Array14. Дан массив A размера N. Вывести вначале его элементы с четными номерами (в порядке возрастания номеров), а затем — элементы с нечетными номерами (также в порядке возрастания номеров):
A2, A4, A6, …, A1, A3, A5, ….
Условный оператор не использовать.
Array15. Дан массив A размера N. Вывести вначале его элементы с нечетными номерами в порядке возрастания номеров, а затем — элементы с четными номерами в порядке убывания номеров:
A1, A3, A5, …, A6, A4, A2.
Условный оператор не использовать.
Array16°. Дан массив A размера N. Вывести его элементы в следующем порядке:
A1, AN, A2, AN−1, A3, AN−2, ….
На сегодня всё! Если у вас возникли вопросы, задавайте их в комментариях. И не забывайте рассказывать о нашем сайте своим друзьям!
Как вывести массив в обратном порядке паскаль
Program z2;
Var a:array[1..30] Of Integer;
s,i: Integer;
Begin
WriteLn (‘Введите 30 чисел:’);
For i:=1 To 30 Do ReadLn (a[i] ) ;
s: = 0 ;
For i:=1 To 30 Do s:=s+a[i] ;
WriteLn(s);
End.
for i:=1 to n do
writeln(a[i]);
Program z4;
Var a:Array[1..15] Of Integer;
I:Integer;
Begin
Randomize;
For i:=1 to 15 Do a[i]:=Random(41)+10;
For i:=1 To 15 Do Write(a[i]);
End.
2.2.3.6. Изменение порядка следования элементов в массиве на обратный (инверсия)
Пусть нам дан массив А = /1, 2, 3, 4, 5, 6/. В результате выполнения операции инверсии получим массив А = /6, 5, 4, 3, 2, 1/. Обмен элементов необходимо производить в цикле FOR, конечное значение параметра этого цикла равно количеству пар элементов, подлежащих обмену. Действительно, в нашем случае для достижения требуемого результата необходимо переставить местами A[1] и A[6], A[2] и A[5], A[3] и A[4] элементы, что соответствует К = 3 парам. Подсчитать количество пар, между которыми необходимо произвести обмен можно следующим образом: K= N DIV 2, где N – количество элементов массива, а DIV – математическая операция целочисленного деления (нельзя использовать вещественное деление /, так как параметр цикла FOR К должен быть целым числом). На рис. 15 приведена схема обмена между элементами произвольной пары A[1] и A[6].
П еременная V позволяет сохранить значения элемента массива A[1] при копировании в эту ячейку значения A[6]. Аналогично происходит обмен между другими парами. Формула обмена элементов выглядит следующим образом: A[i] A[N+1-i]. Действительно, при N = 6 имеем:
i = 1 обмен между A[1] и A [6] ( 6+1-1= 6);
i = 2 обмен между A[2] и A [5] ( 6+1-2= 5);
i = 3 обмен между A[3] и A [4] ( 6+1-3= 4).
Б лок-схема алгоритма инверсии массива приведена на рис. 16. Фрагмент программы приводится ниже.
for i :=1 to K do
2.2.3.7. Сортировка элементов массива
Под сортировкой массива понимают процесс перестановки элементов массива определенным образом. Для числовых массивов это означает упорядочивание массивов либо по возрастанию, либо по убыванию. Существуют различные метода сортировки массивов. Рассмотрим наиболее распространенные: метод линейного перебора и метод «пузырька».
Суть метода линейного перебора заключается в следующем:
В исходном массиве выбирается элемент с наименьшим (если сортировка по возрастанию), либо с наибольшим значением (если сортировка по убыванию).
Этот элемент меняется местами с первым элементом массива. Он занимает свою окончательную позицию и в дальнейшем исключается из рассмотрения. Теперь исходный массив укорачивается слева на 1 элемент.
Шаги 1-2 повторяются до тех пор, пока длина укороченного массива больше одного элемента.
Очередной просмотр массива в соответствии с указанным методом называется проходом.
На рис. 17 приведен тестовый пример сортировки числового массива по убыванию.
Исходный массив N = 5
Ч етвертый проход
На рис. 17 темным цветом отмечена ячейка, с которой начинается поиск максимального элемента в каждом проходе. В каждом проходе приводится массив после обмена элементов. Как видно из тестового примера, для упорядочивания массива необходимо N-1 проходов просмотра массива, причем поиск максимального значения в укороченном массиве начинается с того элемента, номер которого совпадает с номером прохода. В приведенном тестовом примере:
Перебирают массив с первого элемента. Максимальное значение массива равно A[3] = 15, поэтому производят обмен A[1] = -2 и A[3] = 15.
Перебирают массив со второго элемента. Максимальное значение массива равно A[2] = 8, поэтому не производят обмен.
Перебирают массив с третьего элемента. Максимальное значение массива равно A[6] = 6, поэтому производят обмен A[3] = -2 и A[6] = 6.
Перебирают массив с четвертого элемента. Максимальное значение массива равно A[6] = -2, поэтому производят обмен A[4] = -4 и A[6] = -2.
На рис. 18 приведена блок-схема алгоритма упорядочивания по убыванию методом линейного перебора. Внешний цикл по параметру J предназначен для счетчика проходов, а внутренний по I – для просмотра элементов массива внутри каждого прохода. Перестановка пар элементов аналогична процедуре, представленной на рис. 15. Фрагмент программы приводится ниже.
Программирование с использованием массивов
Линейным массивом можно обозначить, например, оценки учеников класса. Каждая оценка является значением элемента массива оценок «A» и имеет порядковый номер (индекс). В Турбо-Паскале значение индекса указывается в квадратных скобках после имени массива. Можно создать массив фамилий «S» учеников класса. Значением элемента массива будет фамилия ученика, а индексом — порядковый номер по списку. Пусть дан список фамилий учеников и их оценки:
| № | Фамилии | Оценки |
| 1 | Иванов | 5 |
| 2 | Петров | 4 |
| 3 | Сидоров | 5 |
| 4 | Титов | 5 |
| . | . | . |
| 30 | Якупов | 4 |
Описание массивов: Присвоение значений элементам массива: Приведем таблицу обозначений и соответствия элементам массива, их значений и индексов:
| Номер элемента индекса | 1 | 2 | 3 | 4 | 1 | 30 |
| Элементы массива «S» | S[ 1 ] | S[ 2 ] | S[ 3 ] | S[ 4 ] | S[ i ] | S[ 30 ] |
| Значения элементов | Иванов | Петров | Сидоров | Титов | . | Якупов |
| Элементы массива «A» | A[ 1 ] | A[ 2 ] | A[ 3 ] | A[ 4 ] | A[ i ] | A[ 30 ] |
| Значения элементов | 5 | 4 | 5 | 5 | . | 4 |
Если известна зависимость, по которой изменяются значения элементов массива, то присвоение значений удобно проводить в операторах цикла c параметром или с условием. Например, присвоим значения элементам массива «y» по зависимости: y=sin(x), где x= Pi * i/180, 0<= i <=180. Присвоим случайные значения в диапазоне от -30 до +40 ста элементам массива «R»: Присвоим значения семи элементам массива «A» оператором Readln: При выводе массива на экран удобно размещать данные в виде таблицы — в несколько колонок. Для вывода обозначений переменных («шапки таблицы») можно использовать операторы вывода символов в цикле, например: — шапка для вывода в три пары колонок значений переменных «S» и «A». Шапка занимает 66 позиций (по ширине экрана в текстовом режиме размещается 79 символов и пробел). Оператор Writeln; переводит курсор на новую строчку.
Вывод значений ста элементов массивов «S» и «A» в три пары колонок, произведем операторами: В этом случае данные таблицы полностью не умещаются на экране и можно задержать прокрутку экрана при выводе данных, применяя оператор Readln после вывода, например, 20 строк.
В цикле удобно определять сумму элементов массива, наибольший (наименьший) элемент и создавать новые массивы, удовлетворяющие некоторому условию, например:
Двумерные массивы
Массивы, рассмотренные выше, имеют элементы, упорядоченные по одному индексу и называются одномерными массивами или векторами. Массив может быть двумерным, трехмерным и т. д. Двумерные массивы имеют элементы, упорядоченные по двум индексам и часто называются матрицами. В Турбо-Паскале при описании многомерного массива диа-пазоны изменения индексов перечисляются через запятые, например: Рассмотрим пример работы с двумерными массивами. Обозначим массивом оценки учеников класса по нескольким предметам. Каждая оценка является значением элемента массива оценок «A» и имеет порядковый номер (два индекса). Поставим в соответствие первому индексу номер фамилии в списке учеников, а второму — номер предмета, по которому получена оценка. Тогда двумерный массив оценок можно представить в виде таблицы: каждый элемент a[i, j] находится на пересечении I-ой строки и J-го столбца.
Исходные данные могут быть представлены в виде таблицы оценок:
Годовые оценки по предметам:
| 1 | 2 | 3 | 4 | 5 | 6 | |||
| № | Фамилия | Физика | Химия | Алгебра | Геометрия | История | Биология | |
| 1 | Иванов | 4 | 5 | 3 | 4 | 5 | 5 | |
| 2 | Петров | 4 | 5 | 4 | 3 | 4 | 4 | |
| 3 | Сидоров | 5 | 5 | 3 | 4 | 5 | 4 | |
| . | . | . | . | . | . | . | . | |
| 30 | Якупов | 4 | 3 | 4 | 5 | 4 | 5 | |
Можно создать одномерные массивы фамилий «S» учеников класса и наименований предметов «P» . Значением элемента массива «Р» будет наименование предмета, а индексом — порядковый номер предмета, например: 1 — физика, 2 — химия, 3 — алгебра, 4 — геометрия, 5 — история, 6 — биология. Приведенная выше таблица может быть представлена в виде набора элементов ( число строк = N, число столбцов = M ):
| Номер строки «I» | Номер столбца «J» | 1 | 2 | 3 | 4 | . | J | . | M | |
| Массив «S» | Массив «P» | P[1] | P[2] | P[3] | P[4] | . | P[J] | . | P[M] | |
| 1 | S[1] | Массив «A» | a[1, 1] | a[1, 2] | a[1, 3] | a[1, 4] | . | a[1, j] | . | a[n, m] |
| 2 | S[2] | a[2, 1] | a[2, 2] | a[2, 3] | a[2, 4] | . | a[2, j] | . | a[2, m] | |
| 3 | S[3] | a[3, 1] | a[3, 2] | a[3, 3] | a[3, 4] | . | a[3, j] | . | a[3, m] | |
| 4 | S[4] | a[4, 1] | a[4, 2] | a[4, 3] | a[4, 4] | . | a[4, j] | . | a[4, m] | |
| . | . | . | . | . | . | . | . | . | . | |
| I | S[I] | a[i, 1] | a[i, 2] | a [i, 3] | a [i, 4] | . | a[i, j] | . | a[i, m] | |
| . | . | . | . | . | . | . | . | . | . | |
| N | S[N] | a[n, 1] | a[n, 2] | a[n, 3] | a[n, 4] | . | a[n, j ] | . | a[n, m] | |
Массив оценок можно задать с использованием функции Random, например: Для вывода наименований предметов ( «шапка» таблицы ) можно использовать операторы: Для вывода элементов массива «A» на экран удобно использовать вложенный цикл: Для расчета массива «SS» — сумм «M» элементов в каждой из «N» строк массива «A» (NxM) можно применить операторы: Здесь для каждого индекса «i» от 1 до N происходит суммирование элементов A[i, j] по индексу «j» от 1 до M. При модификации массива «A» изменяется расположение данных в исходном массиве, например, в случае вставки данных из линейного массива «B» в колонку с номером «M1» необходимо сдвинуть данные в колонках J >= M1 используя операторы: Если порядковый номер предмета изменится, то необходимо изменить расположение оценок в массиве «A», например, перестановку колонок с оценками по физике и химии можно сделать операторами: Примечание: при модификации массива «A» не забудьте соответственно изменять расположение данных в сопутствующих массивах, например, «P» или «S». При создании новых массивов согласно некоторым условиям выбираются данные из элементов исходного массива. Например, для создания массива «В» из четных столбцов массива «A» можно использовать операторы: Для создания массива «В», состоящего из строк массива «A», удовлетворяющих условию A[i, 1] > C, где C — заданное число, можно использовать операторы: Для сравнения значений элементов массива удобно строить столбиковые диаграммы (гистограммы). Например, для вывода «N» значений положительных элементов массива «SS» в виде горизонтальной гистограммы можно использовать операторы: Добавив операторы вывода порядкового номера и значений SS[i] получаем гистограмму в виде: 
Примеры:
Пример1: Дан двумерный массив. В каждой строке все его элементы, не равные нулю, переписать (сохраняя порядок) в начало строки, а нулевые элементы — в конец массива. Новый массив не заводить.
Этапы решения задачи:
1. Суть одного из алгоритмов решения данной задачи состоит в том чтобы «просматривать» массив построчно и находить в каждой строке пару (0:число), а затем менять их местами между собой и так до тех пор пока в строке таких пар не окажется.
2. Напишем программу на псевдо паскале:
3.Составим блок схему алгоритма
Детализируем блок «Упорядочиваем 1-ю строку»
Блок схема алгоритма целиком:
4.Приведем программу на языке Паскаль: