Обработка одномерных массивов в Паскале
Никитина В. Г. , учитель высшей категории, Якутской городской гимназии, г. Якутска
Что такое массив?
- Как ввести 10000 переменных?
Массив – это группа переменных одного типа, расположенных в памяти рядом (в соседних ячейках) и имеющих общее имя. Каждая ячейка в массиве имеет уникальный номер.
Надо :
- выделять память
- записывать данные в нужную ячейку
- читать данные из ячейки
Описание одномерных массивов
- Var
- Имя переменной: Array [тип индекса (ов)] Of тип элементов;
- Здесь
- Array – служебное слово (в переводе с английского означает «массив»);
- Of – служебное слово (в переводе с английского означает «из»).
- Тип индекса – любой порядковый тип, кроме типов integer, longint.
- Тип же самих элементов может быть любым, кроме файлового типа.
Ввод одномерных массивов
- Program Primer_1;
- Var i: integer;
- X: array [1..30] of Integer;
- Begin
- i := 1;
- While i Do
- Begin
- Read (X[i]);
- i := i + 1
- End;
- Readln
- End.
- В первом варианте ввод массива Х
- в программе осуществляется с использованием
- цикла с предусловием .
Ввод одномерного массива
- 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 введен с использованием цикла с постусловием.
Ввод одномерного массива
- Program Primer_3;
- Var i: integer;
- X: array [1..30] of Integer;
- Begin
- For i := 1 to 30 do
- Read (X[i]);
- Readln
- End.
- Массива Х вводится с помощью цикла с
- Параметром , где в качестве параметра используется индекс элемента массива (i).
Вывод одномерных массивов в Паскале
- Вывод одномерного массива осуществляется также поэлементно.
- Например, выведем одномерный массив Х 1 , Х 2 , …, Х n , состоящий из элементов вещественного типа.
- Для вывода массива можно использовать любой цикл.
Приведем два возможных способа вывода массива:
- 1) For i := 1 To n Do Write (X[i],’ ‘)
- 2) For i := 1 To n Do Writeln (x[i])
Заполнение массива случайными числами в диапазоне от 100 до 200
- For i := 1 to n do begin
- A[ i ] := 100 +random(100);
- Write(A[ i ] : 4];
- End;
Перебор элементов
Примеры решения задач
- Вычисление суммы и произведения элементов массива, удовлетворяющих заданному условию
- Нахождение количества элементов, удовлетворяющих заданному условию
- Нахождение номеров элементов, обладающих заданным свойством
- Поиск нужного элемента в
- массиве
- Изменение значений некоторых
- элементов массива
- Формирование нового массива
- Перестановка элементов массива
- Сортировка массива
Дан целочисленный одномерный массив, состоящий из n элементов. Найти сумму и произведение нечетных элементов, кратных 3.
- 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;
- Fo r 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.
Дан массив целых чисел. Найти количество тех элементов, значения которых положительны и не превосходят заданного натурального числа А.
- 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;
- Fo r i:=1 To n Do {обработка массива}
- If (X[i] 0) and (X[i] Then k:=k + 1;
- Writeln (‘k=’, k); 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 20) Then Write (i:5);
- Readln
- End.
Дан одномерный массив Х 1 , Х 2 , …, Х n . Найти минимальный элемент и его порядковый номер среди элементов, расположенных на четных местах.
- 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
- Readln (X[i]); i:= i + 1 End;
- min:=X[2]; k:=2; i:=4;
- While i
- If X[i]
- i:= i + 2 End;
- Writeln (‘min=’, min:6:1, ‘ k=’, k);
- 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]
- If k 0 Then Writeln (‘yes’)
- Else Writeln (‘no’);
- Readln End.
В19.1 В программе используется одномерный целочисленный массив А, с индексами от 0 до 10. Дан фрагмент программы, в котором значения элементов сначала задаются, а затем меняются
- for I := 0 to 10 do
- A[i] := I;
- for I := 0 to 10 do
- begin
- A[10 – i] := A [i];
- A[i] := A [10 – i];
- end;
B19.2 В программе используется одномерный целочисленный массив А, с индексами от 0 до 9. Дан фрагмент программы, в котором значения элементов сначала задаются, а затем меняются
- for I := 0 to 9 do
- A [i] := I;
- for I := 9 downto 0 do
- A [9 – i] := A [i];
Задания для самостоятельной работы
- Дан целочисленный одномерный массив, состоящий из n элементов. Подсчитать количество его положительных, отрицательных и нулевых элементов.
- Дан одномерный массив Х1, Х2, …, Хn. Найти максимальный элемент и его порядковый номер.
- Дан одномерный массив Х1, Х2, …, Хn. Есть ли в массиве положительные элементы, кратные k (k вводить с клавиатуры)?
- Дан одномерный массив Х1, Х2, …, Хn. Найти все элементы, кратные 3 или 5. Сколько их?
Выводы
Для работы с массивами нужно в первую очередь научиться;
- Выделить память нужного размера под массив;
- Записывать данные в ячейку памяти массива;
- Читать данные из ячейки массива;
Спасибо за внимание!