ОДНОМЕРНЫЕ МАССИВЫ ЦЕЛЫХ ЧИСЕЛ
НАЧАЛА ПРОГРАММИРОВАНИЯ
Массив
Массив - это поименованная совокупность однотипных элементов, упорядоченных по индексам, определяющим положение элемента в массиве.
Одномерный массив
Индекс элемента массива
Значение элемента массива
3
5
6
7
8
9
1
4
2
3
6
1
4
-2
0
-5
7
9
Решение разнообразных задач, связанных с обработкой массивов, базируется на решении таких типовых задач, как:
- суммирование элементов массива;
- поиск элемента с заданными свойствами;
- сортировка массива.
Описание массива
Общий вид описания массива:
var : array [ ..
] of ;
Тип элементов массива
Имя массива
var a : array [1..10] of integer;
Минимальное значение индекса
Значение 1-го элемента массива
Максимальное значение индекса
const b : array [1..5] of integer = (4, 2, 3, 5, 7);
Массив b с постоянными значениями описан в разделе описания констант.
Способы заполнения массива
1 способ . Ввод каждого значения с клавиатуры:
for i :=1 to 10 do read (a[i]);
2 способ . С помощью оператора присваивания (по формуле):
for i :=1 to 10 do a[i]:=i;
3 способ . С помощью оператора присваивания (случайными числами):
randomize ;
for i:=1 to 10 do a[i]:=random(100);
a[1]:=1 a[2]:=2 … a[10]:=10
Массив из 10 случайных чисел в диапазоне от 0 до 99
Вывод массива
1 способ. Элементы массива можно вывести в строку, разделив их пробелом:
for i:=1 to 10 do write (a[i], ' ');
45
21
56
43
83
56
69
34
28
15
2 способ . Вывод с комментариями:
for i:=1 to 10 do write ('a[', i, ']=', a[i]);
a[1]=4
a[2]=1
a[3]=6
a[4]=3
a[5]=8
a[6]=5
a[7]=9
a[8]=4
a[9]=8
a[10]=7
Заполнения массива случайными числами от 0 до 49 и вывод элементов массива через пробел
program n1 ; var i: integer;
a: array[1..10] of integer;
b egin for i:=1 to 10 do a[i] :=random( 5 0) ;
for i:=1 to 10 do write (a[i] ,’ ’) ; end .
Вычисление суммы элементов массива
Суммирование элементов массива
осуществляется за счёт поочерёдного добавления слагаемых :
Определяется ячейка памяти (переменная s ),
в которой будет последовательно накапливаться
результат суммирования
Присваивается переменной s начальное значение 0
- число, не влияющее на результат сложения
Для каждого элемента массива из переменной s
считывается её текущее значение и складывается
со значением элемента массива;
полученный результат присваивается переменной s .
Вычисление суммы элементов массива
Основной фрагмент программы:
s:=0;
for i:=1 to 10 do s:=s+a[i];
Вычисление суммы элементов массива
сумма
индекс элемента массива
program n _ 2 ;
var s, i: integer;
a: array[1..10] of integer;
b egin
s:=0;
for i:=1 to 10 do a[i] :=random( 5 0) ;
for i:=1 to 10 do write (a[i] , ’ ’) ;
for i:=1 to 10 do s:=s+a[i];
writeln ('s=', s) ;
end .
Целые числа
Массив а
Целые числа
Начальное значение суммы
из 10 чисел
Вводим массив из 10 чисел случайным образом от 0 до 49
Выводим массив на экран через пробел
Находим сумму элементов массива
Выводим ответ на экран
Типовые задачи поиска
Определение наибольшего (наименьшего)
элемента массива
Определение элемента массива, значение
которого равно заданному значению
Нахождение наибольшего элемента
в стопке карточек с записанными числами :
1) Взять верхнюю карточку, записать на доске
(запомнить) число как наибольшее.
2) Взять следующую карточку, сравнить числа. Если
на карточке число больше, то записать это число.
Повторить действия, описанные в пункте 2 для всех
оставшихся карточек
При организации поиска наибольшего элемента массива правильнее искать его индекс.
!
Вычисление наибольшего элемента массива
Вычисление наибольшего элемента массива
самый большой
Вычисление наибольшего элемента массива
max
Вычисление наибольшего элемента массива
Вычисление наибольшего элемента массива
Вычисление наибольшего элемента массива
max
Вычисление наибольшего элемента массива
max
Вычисление наибольшего элемента массива
max
max then max:=a[i]; writeln; write(‘ наибольший элемент массива = ’,max); readln; readln end. " width="640"
Программа поиска наибольшего элемента в массиве
Program maxsimum;
var a:array [1.. 10 ] of integer;
max, i: integer;
begin
ВВОД ЭЛЕМЕНТОВ МАССИВА ;
max:=a[1];
for i:=2 to n do
if a[i]max then max:=a[i];
writeln;
write(‘ наибольший элемент массива = ’,max);
readln;
readln
end.
Нахождение элемента массива с заданными свойствами
Результатом поиска элемента, значение которого равно заданному, может быть:
- n - индекс элемента массива такой, что a[n]= x , где х - заданное число;
- сообщение о том, что искомого элемента в массиве не обнаружено.
10
50
1
3
50
14
21
50
10
21
Здесь:
- трём равен 4-й элемент;
- десяти равны 1-й и 9-й элементы;
- нет элемента, равного 12.
Поиск элемента, равного 50
program n _4;
var n, i: integer;
a: array[1..10] of integer;
b egin
for i:=1 to 10 do a[i] :=random(60) ;
for i:=1 to 10 do write (a[i] , ’ ’) ;
n := 0;
for i:= 1 to 10 do
if a[i] =50 then n :=i;
if n=0 then write( ’ Нет ’ ) else write (i)
end .
В программе найден последний из элементов, удовлетворяющих условию.
10
50
1
3
50
14
21
50
10
21
Поиск элемента, равного 50
program n _5;
var n, i: integer;
a: array[1..10] of integer;
b egin
for i:=1 to 10 do a[i] :=random(60) ;
for i:=1 to 10 do write (a[i] , ’ ’) ;
i := 0;
repeat
i:=i+1;
until (a[i]=50) or (i=10);
if a[i]=50 then write(i) else write(' Нет ')
end .
В программе найден первый из элементов, удовлетворяющих условию.
10
50
1
3
50
14
21
50
10
21
50 then k:=k+1; write ('k=', k) end . 10 59 2 1 5 3 5 8 14 2 8 50 10 5 1 " width="640"
Подсчет количества элементов
Для подсчета вводится переменная, значение которой увеличивается на единицу каждый раз, когда найден нужный элемент.
program n _ 6 ;
var k, i: integer;
a: array[1..10] of integer;
b egin
for i:=1 to 10 do a[i] :=random(60) ;
for i:=1 to 10 do write (a[i] ,` `) ;
k := 0;
for i:=1 to 10 do
if a[i]50 then k:=k+1;
write ('k=', k)
end .
10
59
2 1
5 3
5 8
14
2 8
50
10
5 1
1 0 ) and (a[i]then s := s + a[i]; write (' s =', s ) end . 10 50 1 3 50 14 21 50 10 21 " width="640"
Сумма значений элементов, удовлетворяющих условию
program n _ 7 ;
var s, i: integer;
a: array[1..10] of integer;
b egin
for i:=1 to 10 do a[i] :=random(60) ;
for i:=1 to 10 do write (a[i] ,` `) ;
s := 0;
for i:=1 to 10 do
if ( a[i] 1 0 ) and (a[i]then s := s + a[i];
write (' s =', s )
end .
10
50
1
3
50
14
21
50
10
21
Сортировка массива
Сортировка элементов массива по убыванию
выбором осуществляется следующим образом:
1. В массиве выбирается максимальный элемент
2. Максимальный и первый элемент меняются местами
(первый элемент считается отсортированным)
3. В неотсортированной части массива снова выбирается
максимальный элемент; он меняется местами с первым
неотсортированным элементом массива
Действия пункта 3 повторяются с неотсортированными
элементами массива, пока не останется один
неотсортированный элемент (минимальный)
Сортировка массива
Индекс
Значение
Шаги
1
2
1
0
2
1
3
3
9
4
2
4
5
4
6
5
3
6
7
7
6
8
5
Итог:
5
6
1
2
3
4
9
0
3
1
6
2
4
5
9
0
9
0
2
4
3
1
5
6
4
0
3
5
6
9
1
2
5
9
2
3
0
1
4
6
5
6
9
0
4
2
3
1
9
6
4
3
2
5
0
1
0
2
5
6
1
9
3
4
a[imax] then imax:=j; x:=a[i]; a[i]:=a[imax]; a[imax]:=x end ; for i:=1 to 10 do write (a[i] , ’ ’) ; end; 9 6 5 4 3 2 1 0 " width="640"
Сортировка массива
0
1
9
2
4
3
6
5
program n _ 8 ;
var n, i, j, x, imax : integer;
a: array[1..10] of integer;
b egin
for i:=1 to 10 do read (a [i] ) ;
for i:=1 to 10 do write (a[i] ,’ ’) ;
for i:=1 to 9 do
begin
imax:=i;
for j:=i+1 to 10 do i f a[j]a[imax] then imax:=j;
x:=a[i];
a[i]:=a[imax];
a[imax]:=x
end ;
for i:=1 to 10 do write (a[i] , ’ ’) ;
end;
9
6
5
4
3
2
1
0