Массивы в Pascal
Одномерные массивы
Массивы
Один из самых распространенных способов организации данных – табличный.
Таблицы могут состоять из 1 строки (линейная):
а 1 а 2 а 3 а 4
и из нескольких строк и столбцов (прямоугольная):
а 11 а 12 а 13 а 14
а 21 а 22 а 23 а 24
а 31 а 32 а 33 а 34
Массив – совокупность данных одного типа.
Массивы Одномерные массивы
- Обозначаются массивы латинскими буквами, строки нумеруются сверху вниз, столбцы слева направо. Элемент, расположенных на i – том месте линейной таблицы обозначается A [ i ]
Название массива
Номер элемента
Массивы Одномерные массивы
- Прежде чем использовать массив в программе необходимо зарезервировать в памяти место под него. Для этого используется зарезервированное слово array – массив:
- Var
a:array[1..n] of integer;
Число элементов массива
Алгоритм решения задач с использованием массивов:
- Описание массива
- Заполнение массива
- Вывод массива (распечатка)
- Выполнение условий задачи
- Вывод результата
Способы задания элементов массива:
Write(‘Введите число элементов’);
Read(n);
For i:=1 to n do
Read(a[i]);
Writeln;
For i:=1 to n do
Write(a[i]:4);
Ввод элементов массива
Вывод элементов массива
Способы задания элементов массива:
2. С помощью генератора случайных чисел.
Randomize;
Write(‘Введите число элементов’);
Read(n);
For i:=1 to n do begin
a[i]:=random(10);
Write(a[i]:4);
End;
Ввод
элементов
массива
Вывод элементов массива
0 then s:=s+a[i]; end; gotoxy(5,10); write('s= ',s); readkey; end. " width="640"
Пример 1 В одномерном массиве посчитать сумму положительных элементов
program sum;
uses crt;
var a:array[1..10] of integer;
i,n,s:integer;
begin
clrscr;
write('Введите число элементов');
read(n);
for i:=1 to n do
read(a[i]);
for i:=1 to n do begin
write(a[i]:4);
if a[i]0 then s:=s+a[i];
end;
gotoxy(5,10);
write('s= ',s);
readkey;
end.
Пример 2 В одномерном массиве вычислить минимальный элемент
program minimum;
uses crt;
var a:array[1..10] of integer;
i,n,min:integer;
begin
clrscr; write('Введите число элементов');
read(n);
for i:=1 to n do
read(a[i]); writeln;
for i:=1 to n do
write(a[i]:4);
min:=a[1];
for i:=2 to n do
if a[i]
writeln;
write('Мин. элемент= ',min);
readkey;
end.
Пример 3 Дан массив целых чисел. Записать его наоборот
program massiv;
uses crt;
var a:array[1..10] of integer;{описание массива}
i,n:integer;
begin
clrscr;
randomize; {генератор случайных чисел}
write('Введите число элементов');
read(n);
for i:=1 to n do begin
a[i]:=random(10); {заполнение массива}
write(a[i]:4); {вывод массива}
end;
writeln;{переход на след. строку}
for i:=n downto 1 do
write(a[i]:4); {вывод массива наоборот}
readkey
end.
Пример 4 Определить, сколько пар одинаковых соседних элементов содержится в массиве.
program massiv;
uses crt;
var a:array[1..10] of integer;{описание массива}
i,n,s:integer;
begin
clrscr;
randomize; {генератор случайных чисел}
write('Введите число элементов');
read(n);
for i:=1 to n do begin
a[i]:=random(10); {заполнение массива}
write(a[i]:4); {вывод массива}
end;
writeln;{переход на след. строку}
for i:=1 to n do
if a[i]=a[i+1] then s:=s+1;
write('s=',s); {вывод массива наоборот}
readkey
end.
Пример 5 В одномерном массиве заменить все нулевые элементы на 10
program massiv;
uses crt;
var a:array[1..10] of integer;{описание массива}
i,n,s:integer;
begin
clrscr;
randomize; {генератор случайных чисел}
write('Введите число элементов'); read(n);
for i:=1 to n do begin
a[i]:=random(10); {заполнение массива}
write(a[i]:4); {вывод массива}
end; writeln;{переход на след. строку}
for i:=1 to n do begin
if a[i]=0 then a[i]:=10;
write(a[i]:4); {вывод массива наоборот}
end;
readkey
end.
5. В одномерном массиве найти произведение ненулевых элементов. " width="640"
Самостоятельно:
- В одномерном массиве найти разность наибольшего и наименьшего элементов.
- Дан одномерный массив. Вывести на экран числа 5.
- В одномерном массиве найти произведение ненулевых элементов.
Самостоятельная работа. Генератор случайных чисел
В-1
В-2
- Создать и напечатать одномерный массив случайными числами от 0 до 15 и вывести на экран те из них, которые больше 10.
- Создать и напечатать одномерный массив случайными числами от 0 до 10 и вывести на экран те из них, которые больше последнего элемента массива.
- Создать и напечатать одномерный массив случайными числами от 0 до 9. Если есть в нем элементы, равные 3, то заменить их последующими числами.
- Создать и напечатать одномерный массив случайными числами от 0 до 12 и вывести на экран те из них, которые меньше 7.
- Создать и напечатать одномерный массив случайными числами от 0 до 15 и вывести на экран те из них, которые больше первого элемента массива.
- Создать и напечатать одномерный массив случайными числами от 0 до 9. Если есть в нем элементы, равные 8, то заменить их первыми числами.
Решение задач:
Первый уровень сложности
Второй уровень сложности
- Задан одномерный массив целых чисел.
- Задан одномерный массив целых чисел. Найти сумму четных элементов массива, имеющих нечетные индексы.
- Дан одномерный массив размерностью N, заполненный случайными числами. Каждый третий элемент массива возвести в квадрат, если элемент отрицательный. Измененный массив вывести на экран
- Вывести все нечетные элементы массива Найти сумму нечетных элементов этого массива. Найти количество нечетных элементов массива
- Вывести все нечетные элементы массива
- Найти сумму нечетных элементов этого массива.
- Найти количество нечетных элементов массива
- Найти номер наименьшего элемента в массиве
Элементы, заданные, например, на интервале [-19, 26], описываются так: a[i]:= random(46)-19;
Массивы в Pascal
Двумерные массивы
Массивы Двумерные массивы
- Двумерный массив (матрица) – это прямоугольная таблица, состоящая из нескольких строк и столбцов.
-1 3 -2 6
-4 0 5 -2
9 -8 3 2
Обозначение: a[i,j],
где i – номер строки,
j – номер столбца
var
a:array[1..n, 1..m] of integer;
Задание элементов двумерного массива
randomize;
write(‘Введите число строк’);
readln(n);
writeln(‘Введите число столбцов’);
readln(m);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=random(10);
for i:=1 to n do begin
for j:=1 to m do
write(a[i,j]:4);
Writeln;
end;
Цикл открываем только по строкам
program uvelich;
uses crt;
var a:array[1..10,1..10] of integer;
n,m,i,j:integer;
begin
clrscr;
randomize;
writeln('Введите число строк'); read(n);
writeln('Введите число столбцов'); read(m);
for i:=1 to n do begin
a[i,2]:=a[i,2]*2;
end;
writeln;
for i:=1 to n do begin
for j:=1 to m do
write(a[i,j]:4);
writeln;
end;
readkey end.
Пример 1
В двумерном массиве увеличить элементы 2 столбца в 2 раза и напечатать полученный массив.
a[1,1] then s:=s+a[i,j]; end; writeln; write('Сумма=',s); readkey end. Пример 2 Найти сумму всех элементов двумерного массива, больших первого элемента этого массива. " width="640"
uses crt;
var a:array[1..10,1..10] of integer;
n,m,i,j,s:integer;
begin
clrscr; randomize;
writeln('Введите число строк'); read(n);
writeln('Введите число столбцов'); read(m);
for i:=1 to n do
for j:=1 to m do
a[i,j]:=random(10);
for i:=1 to n do begin
for j:=1 to m do
write(a[i,j]:4);
writeln; end;
for i:=1 to n do begin
for j:=1 to m do
if a[i,j]a[1,1] then s:=s+a[i,j];
end; writeln; write('Сумма=',s);
readkey
end.
Пример 2
Найти сумму всех элементов двумерного массива, больших первого элемента этого массива.
Главная и побочная диагонали
- Матрица, у которой число строк равно числу столбцов, называется квадратной , и у нее имеются главная и побочная диагонали.
а 11 а 12 а 13 а 14
а 21 а 22 а 23 а 24
а 31 а 32 а 33 а 34
а 41 а 42 а 43 а 44
Побочная
диагональ
Главная диагональ
n-j+1 – под диаг. i а 11 а 12 а 13 а 14 а 21 а 22 а 23 а 24 а 31 а 32 а 33 а 34 а 41 а 42 а 43 а 44 Главная диагональ i = j i j – под диаг. i " width="640"
Квадратная матрица
Побочная
диагональ
i = n-j+1
i n-j+1 – под диаг.
i
а 11 а 12 а 13 а 14
а 21 а 22 а 23 а 24
а 31 а 32 а 33 а 34
а 41 а 42 а 43 а 44
Главная диагональ
i = j
i j – под диаг.
i
program zadacha1;
var a:array[1..4,1..4] of integer;
i,j,n,s:integer;
begin
n:=4;s:=1;
randomize;
for i:=1 to n do
for j:=1 to n do
a[i,j]:=random(10);
for i:=1 to n-1 do
for j:=1 to n-i do
s:=s*a[i,j];
for i:=1 to n do begin
for j:=1 to n do
write (a[i,j]:4);
writeln;
end;
writeln;
write('s=',s);
end.
Пример 3
Найти произведение элементов, расположенных над побочной диагональю квадратной матрицы.