L/O/G/O Подготовила: Камалова Нафиса Ахатовна, учитель информатики высшей квалификационной категории МАОУ «СОШ 5» МО «ЛМР» РТ Лениногорск Одномерные массивы в языке программирования Паскаль. Одномерные массивы в языке программирования Паскаль. Обучающая программа
Содержание Введение Одномерные массивы в Паскале Примеры решения задач
. все познается через труд, через преодоление собственных ошибок, через процесс решения задач. Основной методический принцип обучения программированию – Введение
использовать его как инструментарий индивидуального и развивающего обучения; Использование программирования позволяет: показать практическую значимость использования программирования для наглядного представления решения задач в различных областях жизнедеятельности человека; развивать логическое и аналитическое мышление школьников. содействовать развитию общей информационной культуры как одного из аспектов будущей профессиональной деятельности; активизировать учебный процесс; Введение
Одномерные массивы в Паскале Одномерные массивы в Паскале Одномерные массивы в Паскале Одномерные массивы в Паскале Понятие «массив» Понятие «массив» Описание одномерных массивов Описание одномерных массивов Ввод одномерных массивов Ввод одномерных массивов Вывод одномерных массивов Вывод одномерных массивов
Понятие «массив» это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип. С понятием «массив» приходится сталкиваться при решении научно- технических и экономических задач обработки совокупностей большого количества значений. В общем случае массив – это структурированный тип данных, состоящий из фиксированного числа элементов, имеющих один и тот же тип.
Понятие «массив» Название регулярный тип (или ряды) массивы получили за то, что в них объединены однотипные (логически однородные) элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве. Массив – это составной объект, образованный из элементов (компонент) одного и того же типа.
Такой тип данных применяется в программировании для обозначения объектов, аналогичных числовым последовательностям в математике, где сразу целая группа чисел обозначается одним именем (чаще всего буквой), а для обращения к каждому отдельному числу данной последовательности используются различные индексы (номера элементов). В математике это может выглядеть, например, так: a 1, а 2, а 3, …, а n. Понятие «массив»
В программировании массив – это последовательность однотипных элементов, имеющих общее имя, причем каждый элемент этой последовательности определяется порядковым номером (индексом) элемента. Понятие «массив»
Примеры массивов: Понятие «массив» Х 1, Х 2, …, Х n – одномерный массив, состоящий из n элементов. А 0, А 1, А 2, …, А 10 – одномерный массив, состоящий из 11 элементов. Массивы бывают одномерными (один индекс), двумерными (два индекса) и т.д.
Структура массива всегда однородна. Массив может состоять из элементов типа integer, real или char, либо других однотипных элементов. Другая особенность массива состоит в том, что к любой его компоненте можно обращаться произвольным образом. Программа может сразу получить нужный ей элемент по его порядковому номеру (индексу). Номер элемента массива называется индексом. Индекс – это значение порядкового типа, определенного, как тип индекса данного массива. Понятие «массив»
Рассмотрим массив Х 1, Х 2, …, Х n. Здесь: Понятие «массив» Х – имя массива; 1, 2,…, n – индексы (порядковые номера) элементов; Х 7 – седьмой элемент массива Х.
Описание одномерных массивов Описание одномерных массивов Описание одномерных массивов Описание одномерных массивов Для описания массивов в программировании предварительно следует ввести соответствующий тип в разделе описания типов. Тип массив описывается следующим образом: Type Имя типа = Array [тип индекса (ов)] Of тип элементов; Var Имя переменной: имя типа;
Описание одномерных массивов Переменную типа массив можно описать сразу в разделе описания переменных Var: Var Имя переменной: Array [тип индекса (ов)] Of тип элементов; Здесь Array – служебное слово (в переводе с английского означает «массив»); Of – служебное слово (в переводе с английского означает «из»). Тип индекса – любой порядковый тип, кроме типов integer, longint. Тип же самих элементов может быть любым, кроме файлового типа.
Например: Type mas = Array [1..20] of real; Var X: mas; Массив Х – одномерный, состоящий из двадцати элементов вещественного типа. Элементы массива хранятся в памяти компьютера последовательно друг за другом. Описание одномерных массивов Размерность массива равна: максимальное значение индекса – минимальное значение индекса + 1. Размерность массива равна: максимальное значение индекса – минимальное значение индекса + 1. размерностью. Количество элементов массива называется его размерностью.
Ввод массивов осуществляется поэлементно. Введем одномерный массив Х, состоящий из 30 элементов, то есть необходимо ввести некую последовательность элементов Х 1, Х 2, …, Х 30. Пусть i – индекс (порядковый номер) элемента в массиве Х. Тогда Х i – i-й элемент массива Х, где i = 1, 2, …, 30. Для ввода массива можно использовать любой цикл. Ввод одномерных массивов в Паскале Ввод одномерных массивов в Паскале Ввод одномерных массивов в Паскале Ввод одномерных массивов в Паскале
Первый вариант: ввод массива с использованием цикла с предусловием: Ввод одномерных массивов i := 1 Конец i <= 30 Ввод a i i := i + 1 Начало Да Нет i := 1 Конец i <= 30 Ввод x i i := i + 1 Начало
Program Primer_1; Var i: integer; X: array [1..30] of Integer; Begin i := 1; While i <= 30 Do Begin Read (X[i]); i := i + 1 End; Readln End. В первом варианте ввод массива Х в программе осуществляется с использованием цикла с предусловием. Program Primer_1; Var i: integer; X: array [1..30] of Integer; Begin i := 1; While i <= 30 Do Begin Read (X[i]); i := i + 1 End; Readln End. В первом варианте ввод массива Х в программе осуществляется с использованием цикла с предусловием. Ввод одномерных массивов
Второй вариант: ввод массива с использованием цикла с постусловием: Ввод одномерных массивов в Паскале i := 1 Конец i > 30 Ввод x i i := i + 1 Начало Да Нет
Ввод одномерных массивов Program Primer_2; Var i: integer; X: array [1..30] of Integer; Begin i := 1; Repeat Read (X[i]); i := i + 1 Until i > 30; Readln End. Массив X введен с использованием цикла с постусловием.
Третий вариант: ввод массива с использованием цикла с параметром: Ввод одномерных массивов Конец i := 1, 30, 1 Ввод x i Начало
Program Primer_3; Var i: integer; X: array [1..30] of Integer; Begin For i := 1 To 30 Do Read (X[i]); Readln End. Массив X вводится с помощью цикла с параметром, где в качестве параметра используется индекс элемента массива (i). Program Primer_3; Var i: integer; X: array [1..30] of Integer; Begin For i := 1 To 30 Do Read (X[i]); Readln End. Массив X вводится с помощью цикла с параметром, где в качестве параметра используется индекс элемента массива (i). Ввод одномерных массивов
Вывод одномерного массива осуществляется также поэлементно. Например, выведем одномерный массив Х 1, Х 2, …, Х n, состоящий из элементов вещественного типа. Для вывода массива можно использовать любой цикл. Вывод одномерных массивов в Паскале Вывод одномерных массивов в Паскале Вывод одномерных массивов в Паскале Вывод одномерных массивов в Паскале
Первый вариант: вывод массива с использованием цикла с предусловием: Вывод одномерных массивов i := 1 Конец i <= 30 Ввод a i i := i + 1 Начало Да Нет i := 1 Конец i <= 30 Вывод x i i := i + 1 Начало
Второй вариант: вывод массива с использованием цикла с постусловием: Вывод одномерных массивов i := 1 Конец i > 30 Вывод x i i := i + 1 Начало Да Нет
Третий вариант: вывод массива с использованием цикла с параметром: Вывод одномерных массивов Конец i := 1, 30, 1 Вывод x i Начало
В программе вместо операторов Read или Readln используются операторы Write или Writeln. Но просто заменить одни операторы на другие здесь недостаточно. Для того чтобы выводимые значения не сливались между собой, надо явным образом вставлять между ними разделитель – пробел или перевод строки. Вывод одномерных массивов
Приведем два возможных способа вывода массива: Вывод одномерных массивов 1) For i := 1 To n Do Write (X[i], ) 2) For i := 1 To n Do Writeln (x[i])
На первый взгляд второй способ может показаться более простым и удобным, но это далеко не всегда так. Результат работы такой программы зачастую неудобно, а то и просто невозможно анализировать. Ведь каждый элемент массива будет располагаться в отдельной строке, следовательно, мы не сможем увидеть более 25 элементов одновременно. Вывод одномерных массивов
Кроме того, очень часто массив требуется распечатать дважды, чтобы сравнить состояние массива до обработки и результат его обработки. В этом случае сравнение состояний массива гораздо удобнее проводить, если они распечатаны в двух соседних строках, а элементы выровнены по столбцам, то есть к варианту 1 должна быть добавлена еще и форматная печать (указано количество позиций, которое должно отводиться на печать одного элемента).
Программа вывода одномерного массива с помощью цикла с параметром: Вывод одномерных массивов Program Primer_4; Const n = 30; Var i: Integer; X: Array [1..n] Of Real; Begin For i:= 1 To n Do Write (X[i] : 6 : 2, ); Writeln; {курсор переводит на новую строку} Readln End.
Вычисление суммы и произведения элементов массива, удовлетворяющих заданному условию Вычисление суммы и произведения элементов массива, удовлетворяющих заданному условию Нахождение количества элементов, удовлетворяющих заданному условию Нахождение количества элементов, удовлетворяющих заданному условию Нахождение номеров элементов, обладающих заданным свойством Нахождение номеров элементов, обладающих заданным свойством Поиск нужного элемента в массиве Изменение значений некоторых элементов массива Изменение значений некоторых элементов массива Формирование нового массива Перестановка элементов массива Сортировка массива
Задача 1 Дан целочисленный одномерный массив, состоящий из n элементов. Найти сумму и произведение нечетных элементов, кратных 3. Дан целочисленный одномерный массив, состоящий из n элементов. Найти сумму и произведение нечетных элементов, кратных 3. Вычисление суммы и произведения элементов массива, Вычисление суммы и произведения элементов массива, удовлетворяющих заданному условию удовлетворяющих заданному условию
Введем обозначения: n – количество элементов в массиве; А – имя массива; i – индекс элемента массива; A i – i-й элемент массива A; s – сумма нечетных элементов массива, кратных 3; p – произведение нечетных элементов массива, кратных 3. Задача 1. Входные данные: n, A. Выходные данные: s, p.
Первый способ. Для решения используется цикл с параметром: Начало Ввод n i := 1, n, 1 Ввод A i S := 0 P := 1 i := 1, n, 1 (A i mod 2 <>0) и (A i mod 3 = 0) P := p * A S := s + A i Ввод S, p Начало i := 1, n, 1 Да Нет
Program Primer1_1; Var A: Array[1..20] Of Integer; i, n, s, p: Integer; Begin Write (n=); Readln (n); For i:=1 To n Do Readln (A[i]); {ввод массива} s:= 0; p:=1; For i:=1 To n Do {обработка массива} If (A[i] mod 2 <>0) and (A[i] mod 3 = 0) Then Begin s:=s+A[i]; p:= p*A[i] End; Writeln (s=, s, p=, p); Readln End. Задача 1. Дан целочисленный одномерный массив, состоящий из n элементов. Найти сумму и произведение нечетных элементов, кратных 3. Дан целочисленный одномерный массив, состоящий из n элементов. Найти сумму и произведение нечетных элементов, кратных 3.
Второй способ. Для решения используется цикл с предусловием: Program Primer1_2; Var A: Array[1..20] Of Integer; i, n, s, p: Integer; Begin Write (n=); Readln (n); i:=1; While i <= n Do Begin Readln (A[i]); i:= i + 1 End; s:= 0; p:=1; i:=1; While i<=n Do Begin If (A[i] mod 2 <>0) and (A[i] mod 3 = 0) Then Begin s:=s+A[i]; p:= p*A[i] End; i:= i + 1 End; Writeln (s=, s, p=, p); Readln End. Задача 1.
Задача 2 Дан массив целых чисел. Найти количество тех элементов, значения которых положительны и не превосходят заданного натурального числа А. Дан массив целых чисел. Найти количество тех элементов, значения которых положительны и не превосходят заданного натурального числа А. Нахождение количества элементов, Нахождение количества элементов, удовлетворяющих заданному условию удовлетворяющих заданному условию
Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; X i – i-й элемент массива X; A – заданное число; k – количество элементов, значения которых положительны и не превосходят заданного числа А. Задача 2. Входные данные: n,, X, A. Выходные данные: k.
Первый способ. Для решения используется цикл с параметром: Начало Ввод n i := 1, n, 1 Ввод X i k := 1 (X i > 0) и (X i <=A) k := k + 1 Вывод k Конец i := 1, n, 1 Да Нет Ввод A
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_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. Дан массив целых чисел. Найти количество тех элементов, значения которых положительны и не превосходят заданного натурального числа А. Дан массив целых чисел. Найти количество тех элементов, значения которых положительны и не превосходят заданного натурального числа А. Задача 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); Readln End. 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); Readln End. Второй способ. Для решения используется цикл с постусловием:
Задача 3 Найти номера четных элементов массива, стоящих на нечетных местах. Нахождение номеров элементов, Нахождение номеров элементов, обладающих заданным свойством обладающих заданным свойством
Задача 3 Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; X i – i-й элемент массива X. Входные данные: n, X. Выходные данные: i.
Задача 3 Начало Ввод n i := 1, n, 1 Ввод X i (X i mod 2 =0) и (i mod 2 <> 0) Вывод i Конец i := 1, n, 1 Вывод i Вывод i Да Нет i := 1, n, 1
Задача 3 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. 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.
Задача 4 Найти номер последнего отрицательного элемента массива. Найти номер последнего отрицательного элемента массива.
Задача 4 Введем обозначения: n – количество элементов в массиве; A – имя массива; i – индекс элемента массива; A i – i-й элемент массива А; m – номер последнего отрицательного элемента массива. Входные данные: n, А. Выходные данные: m.
Задача 4 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. 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 Дан одномерный массив Х 1, Х 2, …, Х n. Найти минимальный элемент и его порядковый номер среди элементов, расположенных на четных местах. Дан одномерный массив Х 1, Х 2, …, Х n. Найти минимальный элемент и его порядковый номер среди элементов, расположенных на четных местах.
Задача 5 Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; X i – i-й элемент массива Х; min – значение минимального элемента массива; k – порядковый номер минимального элемента среди элементов, расположенных на четных местах. Входные данные: n, X. Выходные данные: min, k.
Задача 5 Первый способ Program Primer4_1; Var X: Array[1..30] Of Real; i, n, k: Integer; min: Real; Begin Write (n=); Readln (n); i:=1; While i <= n Do Begin {ввод массива} Readln (X[i]); i:= i + 1 End; min:=X[2]; k:=2; i:=4; While i <= n Do Begin If X[i] < min Then Begin min:= X[i]; k:= i End; i:= i + 2 End; Writeln (min=, min:6:1, k=, k); End. Program Primer4_1; Var X: Array[1..30] Of Real; i, n, k: Integer; min: Real; Begin Write (n=); Readln (n); i:=1; While i <= n Do Begin {ввод массива} Readln (X[i]); i:= i + 1 End; min:=X[2]; k:=2; i:=4; While i <= n Do Begin If X[i] < min Then Begin min:= X[i]; k:= i End; i:= i + 2 End; Writeln (min=, min:6:1, k=, k); End.
Задача 5 Второй способ Program Primer4_2; Var X: Array[1..30] Of Real; i, n, k: Integer; min: Real; Begin Write (n=); Readln (n); i:=1; Repeat Read (X[i]); i := i + 1 Until i > n; min:=X[2]; k:=2; i:=4; Repeat If X[i] < min Then Begin min:= X[i]; k:= i End; i:= i + 2 Until i > n; Writeln (min=, min:6:1, k=, k) End. Program Primer4_2; Var X: Array[1..30] Of Real; i, n, k: Integer; min: Real; Begin Write (n=); Readln (n); i:=1; Repeat Read (X[i]); i := i + 1 Until i > n; min:=X[2]; k:=2; i:=4; Repeat If X[i] < min Then Begin min:= X[i]; k:= i End; i:= i + 2 Until i > n; Writeln (min=, min:6:1, k=, k) End.
Задача 6 Дан целочисленный одномерный массив. Есть ли в нем отрицательный элемент?
Задача 6 Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; X i – i-й элемент массива Х; k – количество отрицательных элементов в массиве; m – признак наличия или отсутствия отрицательного элемента в массиве Х. Входные данные: n, X. Выходные данные: сообщение yes или no.
Задача 6 Первый способ Program Primer4_3; Const n=10; Var X: Array[1..n] Of Integer; i, k: Integer; Begin For i:=1 To n Do Readln (X[i]); {ввод массива} k:= 0; For i:=1 To n Do If X[i] < 0 Then k:= k + 1; If k <> 0 Then Writeln (yes) Else Writeln (no); Readln End. Program Primer4_3; Const n=10; Var X: Array[1..n] Of Integer; i, k: Integer; Begin For i:=1 To n Do Readln (X[i]); {ввод массива} k:= 0; For i:=1 To n Do If X[i] < 0 Then k:= k + 1; If k <> 0 Then Writeln (yes) Else Writeln (no); Readln End.
Задача 6 Второй способ Program Primer4_4; Const n=10; Var X: Array[1..n] Of Integer; i: Integer; m: Boolean; Begin For i:=1 To n Do Readln (X[i]); {ввод массива} m := false; i:=1; While (i <= n) and not m Do Begin If X[i] < 0 Then m:= true; i:=i+1 End; If m Then Writeln (yes) Else Writeln (no) End. Program Primer4_4; Const n=10; Var X: Array[1..n] Of Integer; i: Integer; m: Boolean; Begin For i:=1 To n Do Readln (X[i]); {ввод массива} m := false; i:=1; While (i <= n) and not m Do Begin If X[i] < 0 Then m:= true; i:=i+1 End; If m Then Writeln (yes) Else Writeln (no) End.
Изменение значений некоторых элементов массива Изменение значений некоторых элементов массива Изменение значений некоторых элементов массива Изменение значений некоторых элементов массива Задача 7 Дан одномерный массив, состоящий из n элементов. Если очередной элемент массива четный, то прибавить к нему первый, если нечетный – прибавить последний. Первый и последний элементы не изменять. Дан одномерный массив, состоящий из n элементов. Если очередной элемент массива четный, то прибавить к нему первый, если нечетный – прибавить последний. Первый и последний элементы не изменять.
Задача 7 Введем обозначения: n – количество элементов в массиве; А – имя массива; i – индекс элемента массива; А i – i-й элемент массива А. Входные данные: n, А. Выходные данные: А.
Задача 7 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; Readln End. 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; Readln End.
Задача 8 Дан одномерный массив А 1, А 2, …, А n. Элементы, не превышающие 15, заменить средним арифметическим всех элементов массива.
Задача 8 Входные данные: n, А. Выходные данные: А. Введем обозначения: n – количество элементов в массиве; А – имя массива; i – индекс элемента массива; А i – i-й элемент массива А; s– сумма элементов массива А; sr – среднее арифметическое всех элементов массива.
Задача 8 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. 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. Сформировать целочисленный массив Х 1,Х 2,…,Х n, элементы которого: 2, 4, 8, 16, …
Задача 9 Введем обозначения: n – количество элементов в массиве; Х – имя массива; i – индекс элемента массива; Х i – i-й элемент массива Х. Входные данные: n. Выходные данные: Х.
Задача 9 По исходным данным получаем следующее правило формирования массива: Х 1 =2; Х i = X i-1 * 2. Program Primer6_1; Const n = 20; Var X: Array[1..n] Of Integer; i: Integer; Begin X[1]:=2; {начало формирования массива} For i:=2 To n Do X[i]:=X[i-1]*2; {конец формирования массива} For i:=1 To n Do Write (X[i]:5); {вывод массива} Writeln; Readln End. Program Primer6_1; Const n = 20; Var X: Array[1..n] Of Integer; i: Integer; Begin X[1]:=2; {начало формирования массива} For i:=2 To n Do X[i]:=X[i-1]*2; {конец формирования массива} For i:=1 To n Do Write (X[i]:5); {вывод массива} Writeln; Readln End.
Задача 10 Сформировать одномерный массив так, что первые два элемента заданы, а остальные элементы с нечетными номерами больше предыдущего на величину первого, а с четными – на величину второго.
Задача 10 Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; X i – i-й элемент массива Х; a, b – соответственно значения первого и второго элементов массива. Входные данные: n, a, b. Выходные данные: X. Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; X i – i-й элемент массива Х; a, b – соответственно значения первого и второго элементов массива.
Задача 10 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. 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.
Задача 11 Дан одномерный масив Х 1,Х 2,…,Х n. Из четных элементов этого массива сформировать новый одномерный массив.
Задача 11 Введем обозначения: n – количество элементов в массиве; X – имя заданного массива; i – индекс элемента массива; X i – i-й элемент массива Х; Y – имя формируемого массива; k – порядковый номер элемента в массиве Y; Y k – k-й элемент массива Y. Входные данные: n, X. Выходные данные: Y.
Задача 11 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. 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 Дан одномерный массив Х 1, Х 2, …, Х n. Поменять местами значения двух элементов массива с номерами k 1 и k 2, где k 1 и k 2 - вводятся с клавиатуры.
Задача 12 Введем обозначения: n – количество элементов в массиве; X – имя заданного массива; i – индекс элемента массива; X i – i-й элемент массива Х; K1, k2 – порядковые номера элементов, значения которых нужно поменять местами; b – дополнительная переменная, используемая для перестановки двух элементов массива. Входные данные: n, X. Выходные данные: Y.
Задача 12 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} Readln End. 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} Readln End.
Задача 13 Переставить все элементы одномерного массива Х в обратном порядке. Переставить все элементы одномерного массива Х в обратном порядке.
Задача 13 Введем обозначения: n – количество элементов в массиве; X – имя заданного массива; i – индекс элемента массива; X i – i-й элемент массива Х; b – дополнительная переменная. Входные данные: n, X. Выходные данные: Y.
Задача 13 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; Readln End. 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; Readln End.
Сортировка массива (сортировка «пузырьком») Сортировка массива (сортировка «пузырьком») Сортировка массива (сортировка «пузырьком») Сортировка массива (сортировка «пузырьком») Задача 14 Отсортировать целочисленный одномерный массив по возрастанию.
Сортировка «пузырьком» Сортировка «пузырьком» Сортировка «пузырьком» Сортировка «пузырьком» Суть метода состоит в том, что последовательно сравниваются все пары соседних элементов массива, и если значения элементов в паре стоят в неправильном порядке (правый меньше левого), то они меняются местами. В результате одного такого прохода по массиву самый большой элемент обязательно окажется на последней позиции массива. При этом от своей позиции он, путем постепенных обменов, дойдет до последнего места. «Всплывает» как пузырек.
Сортировка «пузырьком» Но массив при этом вовсе не обязательно окажется упорядоченным. Гарантированно на нужном месте при этом окажется только самый большой элемент. Поэтому эту процедуру нужно повторить. Но только теперь можно не рассматривать самую последнюю пару. В результате предпоследний элемент тоже окажется на нужном месте. Значит, всю процедуру нужно повторить столько раз, сколько элементов нужно поставить на требуемое место, то есть n – 1 (оставшийся элемент окажется при этом на своем месте сам).
Задача 14 Введем обозначения: n – количество элементов в массиве; X – имя заданного массива; i – индекс элемента массива; X i – i-й элемент массива Х; k – номер просмотра, изменяется от 1 до n-1; w – промежуточная переменная для перестановки местами элементов массива. Входные данные: n, X. Выходные данные: Х.
Задача 14 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. 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.