ВведениеВведениеОдномерные массивы в ПаскалеПримеры решения задачЗадания для самостоятельной работыИндивидуальные заданияТестовые задания
использовать его как инструментарий индивидуального и развивающего обучения;использовать его как инструментарий индивидуального и развивающего обучения;
Понятие «массив»Понятие «массив»Описание одномерных массивовВвод одномерных массивовВывод одномерных массивов
С понятием «массив» приходится сталкиваться при решении научно-технических и экономических задач обработки совокупностей большого количества значений. В общем случае массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип.С понятием «массив» приходится сталкиваться при решении научно-технических и экономических задач обработки совокупностей большого количества значений. В общем случае массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип.
Примеры массивов:Примеры массивов:
Структура массива всегда однородна. Структура массива всегда однородна. Массив может состоять из элементов типа integer , real или char , либо других однотипных элементов. Другая особенность массива состоит в том, что к любой его компоненте можно обращаться произвольным образом. Программа может сразу получить нужный ей элемент по его порядковому номеру (индексу). Номер элемента массива называется индексом. Индекс – это значение порядкового типа, определенного, как тип индекса данного массива.
Рассмотрим массив Х1, Х2, …, Хn .Рассмотрим массив Х1, Х2, …, Хn .Здесь:
Для описания массивов в программировании предварительно следует ввести соответствующий тип в разделе описания типов. Для описания массивов в программировании предварительно следует ввести соответствующий тип в разделе описания типов. Тип массив описывается следующим образом:Type Имя типа = Array [тип индекса (ов)] Of тип элементов;Var Имя переменной: имя типа;
Переменную типа массив можно описать сразу в разделе описания переменных Var:Переменную типа массив можно описать сразу в разделе описания переменных Var:Var Имя переменной: Array [тип индекса (ов)] Of тип элементов;ЗдесьArray – служебное слово (в переводе с английского означает «массив»);Of – служебное слово (в переводе с английского означает «из»). Тип индекса – любой порядковый тип, кроме типов integer, longint.Тип же самих элементов может быть любым, кроме файлового типа.
Например:Например:Type mas = Array [1..20] of real;Var X: mas;Массив Х – одномерный, состоящий из двадцати элементов вещественного типа. Элементы массива хранятся в памяти компьютера последовательно друг за другом.
Ввод массивов осуществляется поэлементно.Ввод массивов осуществляется поэлементно.Введем одномерный массив Х, состоящий из 30 элементов, то есть необходимо ввести некую последовательность элементов Х1, Х2, …, Х30.Пусть i – индекс (порядковый номер) элемента в массиве Х. Тогда Хi – i-й элемент массива Х, где i = 1, 2, …, 30.Для ввода массива можно использовать любой цикл.
Первый вариант: ввод массива с использованием цикла с предусловием:Первый вариант: ввод массива с использованием цикла с предусловием:
Второй вариант: ввод массива с использованием цикла с постусловием:Второй вариант: ввод массива с использованием цикла с постусловием:
Третий вариант: ввод массива с использованием цикла с параметром: Третий вариант: ввод массива с использованием цикла с параметром:
Вывод одномерного массива осуществляется также поэлементно.Вывод одномерного массива осуществляется также поэлементно.Например, выведем одномерный массив Х1, Х2, …, Хn, состоящий из элементов вещественного типа. Для вывода массива можно использовать любой цикл.
Первый вариант: вывод массива с использованием цикла с предусловием:Первый вариант: вывод массива с использованием цикла с предусловием:
Второй вариант: вывод массива с использованием цикла с постусловием:Второй вариант: вывод массива с использованием цикла с постусловием:
Третий вариант: вывод массива с использованием цикла с параметром: Третий вариант: вывод массива с использованием цикла с параметром:
В программе вместо операторов Read или Readln используются операторы Write или Writeln. В программе вместо операторов Read или Readln используются операторы Write или Writeln. Но просто заменить одни операторы на другие здесь недостаточно. Для того чтобы выводимые значения не сливались между собой, надо явным образом вставлять между ними разделитель – пробел или перевод строки.
Приведем два возможных способа вывода массива:Приведем два возможных способа вывода массива:
На первый взгляд второй способ может показаться более простым и удобным, но это далеко не всегда так. На первый взгляд второй способ может показаться более простым и удобным, но это далеко не всегда так. Результат работы такой программы зачастую неудобно, а то и просто невозможно анализировать. Ведь каждый элемент массива будет располагаться в отдельной строке, следовательно, мы не сможем увидеть более 25 элементов одновременно.
Кроме того, очень часто массив требуется распечатать дважды, чтобы сравнить состояние массива до обработки и результат его обработки. Кроме того, очень часто массив требуется распечатать дважды, чтобы сравнить состояние массива до обработки и результат его обработки. В этом случае сравнение состояний массива гораздо удобнее проводить, если они распечатаны в двух соседних строках, а элементы выровнены по столбцам, то есть к варианту 1 должна быть добавлена еще и форматная печать (указано количество позиций, которое должно отводиться на печать одного элемента).
Программа вывода одномерного массиваПрограмма вывода одномерного массивас помощью цикла с параметром:
Вычисление суммы и произведения элементов массива, удовлетворяющих заданному условиюВычисление суммы и произведения элементов массива, удовлетворяющих заданному условиюНахождение количества элементов, удовлетворяющих заданному условиюНахождение номеров элементов, обладающих заданным свойствомПоиск нужного элемента в массивеИзменение значений некоторых элементов массива Формирование нового массива Перестановка элементов массиваСортировка массива
Введем обозначения: Введем обозначения: n – количество элементов в массиве; А – имя массива; i – индекс элемента массива; Ai – i-й элемент массива A;s – сумма нечетных элементов массива, кратных 3; p – произведение нечетных элементов массива, кратных 3.
Дан массив целых чисел. Найти Дан массив целых чисел. Найти количество тех элементов, значения которых положительны и не превосходят заданного натурального числа А.
Введем обозначения: Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; Xi – i-й элемент массива X;A – заданное число; k – количество элементов, значения которых положительны и не превосходят заданного числа А.
Program Primer2_1;Program Primer2_1;Var X: Array[1..20] Of Integer; i, n, k, A: Integer;Begin Write (‘n=’); Readln (n); For i:=1 To n Do Readln (X[i]); {ввод массива} Write (‘A=’); Readln (A); k:= 0; For i:=1 To n Do {обработка массива} If (X[i] >0) and (X[i] <= A) Then k:=k + 1; Writeln (‘k=’, k); Readln End.
Program Primer2_2;Program Primer2_2;Var X: Array [1..20] Of Integer; i, n, k, A: Integer;Begin Write (‘n=’); Readln (n); i:=1; Repeat Read (X[i]); i := i + 1 Until i > n; Write (‘A=’); Readln (A); k:= 0; i:=1; Repeat If (X[i] >0) and (X[i] <= A) Then k:=k + 1; i := i + 1 Until i > n; Writeln (‘k=’, k); ReadlnEnd.
Найти номера четных элементов массива, стоящих на нечетных местах.Найти номера четных элементов массива, стоящих на нечетных местах.
Введем обозначения: Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; Xi – i-й элемент массива X.
Program Primer3_1;Var X: Array[1..20] Of Integer; i, n: Integer;Begin Write (‘n=’); Readln (n); For i:=1 To n Do Readln (X[i]); {ввод массива} For i:=1 To n Do {обработка массива} If (X[i] mod 2 = 0) and (i mod 2<>0) Then Write (i:5); Readln End.
Введем обозначения: Введем обозначения: n – количество элементов в массиве; A – имя массива; i – индекс элемента массива; Ai – i-й элемент массива А;m – номер последнего отрицательного элемента массива.
Program Primer3_2;Program Primer3_2;Const n=10;Var A: Array[1..n] Of Integer; i, m: Integer; Begin For i:=1 To n Do Readln (A[i]); {ввод массива} m := 0; i:=n; While (i >= 1) and (A[i] >=0) Do i:=i-1; m:=i; Writeln (‘m=’, m); Readln End.
Задача 5Задача 5
Введем обозначения: Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; Xi – i-й элемент массива Х;min – значение минимального элемента массива;k – порядковый номер минимального элемента среди элементов, расположенных на четных местах.
Первый способПервый способ
Второй способВторой способ
Дан целочисленный одномерный массив. Есть ли в нем отрицательный элемент?Дан целочисленный одномерный массив. Есть ли в нем отрицательный элемент?
Первый способПервый способ
Второй способВторой способ
Задача 7Задача 7
Введем обозначения: Введем обозначения: n – количество элементов в массиве; А – имя массива; i – индекс элемента массива; Аi – i-й элемент массива А.
Program Primer5_1;Const n = 30;Var A: Array[1..n] Of Integer; i: Integer;Begin For i:=1 To n Do Readln (A[i]); {ввод массива} For i:=2 To n-1 Do If A[i] mod 2 = 0 Then A[i]:= A[i] + A[1] Else A[i]:= A[i] + A[n]; For i:= 1 To n Do Write (X[i] : 5); Writeln; ReadlnEnd.
Дан одномерный массив А1, А2, …, Аn. Элементы, не превышающие 15, заменить средним арифметическим всех элементов массива.Дан одномерный массив А1, А2, …, Аn. Элементы, не превышающие 15, заменить средним арифметическим всех элементов массива.
Введем обозначения: Введем обозначения: n – количество элементов в массиве; А – имя массива; i – индекс элемента массива; Аi – i-й элемент массива А;s– сумма элементов массива А;sr – среднее арифметическое всех элементов массива.
Program Primer5_2;Const n = 30;Var A: Array[1..n] Of Real; i: Integer; s, sr: Real;Begin For i:=1 To n Do Readln (A[i]); {ввод массива} s:= 0; For i:=1 To n Do s:=s+A[i]; sr:= s/n; For i:=1 To n Do If A[i]<=15 Then A[i]:= sr; For i:=1 To n Do Write (A[i]:5); Writeln; Readln End.
Задача 9.Задача 9.
Введем обозначения: Введем обозначения: n – количество элементов в массиве; Х – имя массива; i – индекс элемента массива; Хi – i-й элемент массива Х.
По исходным данным получаем следующее правило формирования массива: Х1=2; Хi = Xi-1 * 2.По исходным данным получаем следующее правило формирования массива: Х1=2; Хi = Xi-1 * 2.
Сформировать одномерный массив так, что первые два элемента заданы, а остальные элементы с нечетными номерами больше предыдущего на величину первого, а с четными – на величину второго.Сформировать одномерный массив так, что первые два элемента заданы, а остальные элементы с нечетными номерами больше предыдущего на величину первого, а с четными – на величину второго.
Введем обозначения: Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; Xi – i-й элемент массива Х;a, b – соответственно значения первого и второго элементов массива.
Program Primer6_2;Const n = 20;Var X: Array[1..n] Of Integer; i, a, b: Integer;Begin Write (‘a=’); Readln (a); Write (‘b=’); Readln (b); X[1]:=a; X[2]:=b; {начало формирования массива} For i:=3 To n Do If i mod 2 <> 0 Then X[i]:= X[i-1] + X[1] Else X[i]:= X[i-1] + X[2]; {конец формирования массива} For i:=1 To n Do Write (X[i]:5); {вывод массива} Readln End.
Дан одномерный масив Х1,Х2,…,Хn. Из четных элементов этого массива сформировать новый одномерный массив.Дан одномерный масив Х1,Х2,…,Хn. Из четных элементов этого массива сформировать новый одномерный массив.
Введем обозначения: Введем обозначения: n – количество элементов в массиве; X – имя заданного массива; i – индекс элемента массива; Xi – i-й элемент массива Х;Y – имя формируемого массива;k – порядковый номер элемента в массиве Y;Yk – k-й элемент массива Y.
Program Primer6_3;Const n = 20;Var X, Y: Array[1..n] Of Integer; i, k: Integer;Begin For i:=1 To n Do Read (X[i]); {ввод массива Х} k:=0; For i:=1 To n Do If X[i] mod 2 = 0 Then Begin k:=k + 1; Y[k] := X[i] End; For i:=1 To k Do Writeln (Y[i]:5); {вывод массива Y} Readln End.
Задача 12Задача 12
Введем обозначения: Введем обозначения: n – количество элементов в массиве; X – имя заданного массива; i – индекс элемента массива; Xi – i-й элемент массива Х;K1, k2 – порядковые номера элементов, значения которых нужно поменять местами;b – дополнительная переменная, используемая для перестановки двух элементов массива.
Program Primer7_1;Const n = 20;Var X: Array[1..n] Of Integer; i, k1, k2, b: Integer;Begin For i:=1 To n Do Read (X[i]); {ввод массива} Write (‘k1=’); Readln (k1); Write (‘k2=’); Readln (k2); b:= X[k1]; X[k1]:= X[k2]; X[k2]:= b; For i:=1 To n Do Writeln (X[i]:5); {вывод массива X} ReadlnEnd.
Переставить все элементы одномерного массива Х Переставить все элементы одномерного массива Х в обратном порядке.
Введем обозначения: Введем обозначения: n – количество элементов в массиве; X – имя заданного массива; i – индекс элемента массива; Xi – i-й элемент массива Х;b – дополнительная переменная.
Program Primer7_2;Const n = 20;Var X: Array[1..n] Of Integer; i, b: Integer;Begin For i:=1 To n Do Read (X[i]); {ввод массива} For i:=1 To n div 2 Do Begin b:= X[i]; X[i]:= X[n+1-i]; X[n+1-i]:= b End; For i:=1 To n Do Write (X[i]:5); {вывод массива X} Writeln; ReadlnEnd.
Задача 14Задача 14
Суть метода состоит в том, что последовательно сравниваются все пары соседних элементов массива, и если значения элементов в паре стоят в неправильном порядке (правый меньше левого), то они меняются местами.Суть метода состоит в том, что последовательно сравниваются все пары соседних элементов массива, и если значения элементов в паре стоят в неправильном порядке (правый меньше левого), то они меняются местами.В результате одного такого прохода по массиву самый большой элемент обязательно окажется на последней позиции массива. При этом от своей позиции он, путем постепенных обменов, дойдет до последнего места. «Всплывает» как пузырек.
Но массив при этом вовсе не обязательно окажется упорядоченным. Гарантированно на нужном месте при этом окажется только самый большой элемент. Поэтому эту процедуру нужно повторить. Но только теперь можно не рассматривать самую последнюю пару.Но массив при этом вовсе не обязательно окажется упорядоченным. Гарантированно на нужном месте при этом окажется только самый большой элемент. Поэтому эту процедуру нужно повторить. Но только теперь можно не рассматривать самую последнюю пару.В результате предпоследний элемент тоже окажется на нужном месте.Значит, всю процедуру нужно повторить столько раз, сколько элементов нужно поставить на требуемое место, то есть n – 1 (оставшийся элемент окажется при этом на своем месте сам).
Введем обозначения: Введем обозначения: n – количество элементов в массиве; X – имя заданного массива; i – индекс элемента массива; Xi – i-й элемент массива Х;k – номер просмотра, изменяется от 1 до n-1;w – промежуточная переменная для перестановки местами элементов массива.
Program Primer8_1;Const n = 100;Var X: Array[1..n] Of Integer; i, k, w: Integer;Begin For i:=1 To n Do Read (X[i]); {ввод массива} For k:=n - 1 Downto 1 Do {цикл по номеру просмотра} For i:=1 To k Do If X[i] > X[i + 1] Then {перестановка элементов} Begin w:= X[i]; X[i]:= X[i + 1]; X[i + 1]:= w End; For i:=1 To n Do Writeln (X[i]:5); {вывод массива X} Readln End.
Дан целочисленный одномерный массив, состоящий из n элементов, и натуральные числа k, m (k < m < n). Вычислить среднее арифметическое элементов массива с номерами от k до m включительно.Дан целочисленный одномерный массив, состоящий из n элементов, и натуральные числа k, m (k < m < n). Вычислить среднее арифметическое элементов массива с номерами от k до m включительно.Дан целочисленный одномерный массив, состоящий из n элементов. Подсчитать количество его положительных, отрицательных и нулевых элементов. Дан одномерный массив Х1, Х2, …, Хn. Найти максимальный элемент и его порядковый номер. Дан одномерный массив Х1, Х2, …, Хn. Есть ли в массиве положительные элементы, кратные k (k вводить с клавиатуры)?Дан одномерный массив Х1, Х2, …, Хn. Найти все элементы, кратные 3 или 5. Сколько их?
Заменить отрицательные элементы массива на их абсолютные величины.Заменить отрицательные элементы массива на их абсолютные величины.Сформировать одномерный массив, содержащий n первых положительных нечетных чисел: 1, 3, 5, …Дано целое число a и массив Х1, Х2, …, Хn. Из элементов, меньших a, сформировать новый одномерный массив.Дан одномерный массив А1, А2, …, Аn. Все элементы уменьшить на величину квадрата наименьшего элемента.Поменять местами первый и максимальный элементы массива.Проверить, что массив упорядочен строго по убыванию (каждый последующий элемент строго меньше предыдущего).
Вариант № 1Вариант № 1Найти сумму положительных элементов в массиве.Дан одномерный массив А1, А2, …, Аn. Наибольший элемент этого массива заменить средним арифметическим отрицательных элементов. Вариант № 2Найти номера элементов массива, значения которых кратны 3 и 5. Сформировать массив: x1 = 2, x2 = 3, xi = , где i=3, 4, …, n.Вариант № 3Найти сумму всех четных элементов массива, стоящих на четных местах, то есть имеющих четные номера. Есть ли в данном массиве элементы, равные заданному числу b?
Вариант № 4Вариант № 4Найти номера элементов массива, значения которых кратны 4 или 6.Дан одномерный массив Х1, Х2, …, Хn . Заменить каждый двухзначный элемент на вторую цифру в его записи.Вариант № 5Найти сумму и произведение элементов массива, больших данного числа b (b вводится с клавиатуры).Есть ли в данном массиве элементы равные заданному числу? Если есть, то вывести номер одного из них.
Вариант № 6Вариант № 6Найти количество элементов массива, значения которых больше заданного числа B и кратны 5.Сформировать одномерный массив, первые два элемента которого есть заданные числа, а остальные элементы с нечетными номерами в два раза больше предыдущего, а с четными – на 3 меньше второго. Вариант №7Найти сумму и произведение положительных элементов массива, значения которых меньше 10.Дан одномерный массив А1, А2, …, Аn. Все четные элементы массива возвести в квадрат, а нечетные удвоить.
Вариант №8Вариант №8Найти номера тех элементов массива, значения которых больше заданного числа С.Из элементов массива А сформировать элементы массива В по правилу: B[i] := A[1] + A[2] + … + A[i].Вариант №9Найти произведение элементов массива, имеющих нечетное значение.Дан одномерный массив Х1, Х2, …, Хn . Все ли элементы массива больше 3?Вариант №10Найти количество тех элементов массива, значения которых положительны и не превосходят заданного числа D.Дан одномерный массив А1, А2, …, Аn. Заменить все элементы, кратные 3, на третий элемент массива.
Вариант №11Вариант №11Найти сумму элементов массива, имеющих нечетные индексы.Определить, есть ли в данном массиве положительные элементы, кратные k (k вводится с клавиатуры). Вариант №12Найти количество нечетных элементов в массиве.Из элементов массива А сформировать массив В той же размерности по правилу: если номер четный, то B[i] := i*A[i], если нечетный, то B[i]:= A[i].
Вариант №13Вариант №13Найти сумму и произведение первых пяти элементов массива.Дан одномерный массив Х1, Х2, …, Хn . Из положительных элементов массива вычесть элемент с номером k1, а отрицательные увеличить на значение элемента с номером k2, нулевые элементы оставить без изменения.Вариант №14Найти сумму элементов массива, принадлежащих промежутку от x до y (x и y вводятся с клавиатуры).Дан одномерный массив А1, А2, …, Аn. Верно ли, что произведение первого и последнего элементов больше, чем сумма нечетных элементов массива.
Вариант №15Вариант №15Дан одномерный массив Х1, Х2, …, Хn . Найти количество и номера таких элементов массива, которые больше своего соседа справа.Из элементов массива А сформировать массив В той же размерности по правилу: если номер четный, то B[i] :=A[i]*A[i], если нечетный, то B[i]:= A[i] Div i.Вариант №16Найти удвоенную сумму положительных элементов массива.Дан одномерный массив А1, А2, …, Аn. Все элементы с нечетными номерами разделить нацело на первый элемент.
Кликнуть мышью по гиперссылке персонального сайта учителя информатики Камаловой Н.А.Кликнуть мышью по гиперссылке персонального сайта учителя информатики Камаловой Н.А.