Вы находитесь на странице: 1из 5

СШ №1 г.

Лида

§ 4
Массивы.
Задача 4-1. Дано семь чисел. Удвоить их значения.
program zadacha4_1;
var a,b,c,d,e,f,g:real;
Begin
writeln('Введите семь чисел ');
readln(a,b,c,d,e,f,g);
a:=a*2;
b:=b*2;
c:=c*2;
d:=d*2;
e:=e*2;
f:=f*2;
g:=g*2;
writeln(' Полученные числа :');
writeln('a=',a,'b=',b,'c=',c,'d=',d,'e=',e);
writeln('f=',f,'g=',g);
End.
В данной задаче нам пришлось вводить семь переменных. А
если бы пришлось обрабатывать не семь переменных, а 100. Это
было бы затруднительно. В таких случаях используются
массивы.
Массив представляет собой таблицу в памяти компьютера
(имеющую название), состоящую из некоторого числа ячеек (7
или 100). Значения, находящиеся в ячейках массива, легко
обрабатывать, необходимо лишь указать имя массива и номер
ячейки ( a[1],a[3], a[7]).
Например, массив а состоит из 10 ячеек (говорят, что
размерность массива равна 10)
1 2 3 4 5 6 7 8 9 10
a
a[1] a[4] a[9]
Решим задачу 4-1 используя массив.
program zadacha4_1a;
const n=7;
var i:integer;
a:array[1..n] of integer;
Begin
for i:=1 to n do {Ввод элементов массива}
begin
writeln('Введите a[',i,']');
read (a[i]);
end;
writeln('Первоначальный массив');
for i:=1 to n do { Вывод эл. массива}
write (a[i]);
for i:=1 to n do
a[i]:=a[i]*2; { Умножение на 2}
writeln; writeln('Изменённый массив');
for i:=1 to n do { Вывод эл. массива}
write (a[i]);
End.
стр. 1 из 5
СШ №1 г. Лида

Задача 4-2. Дан массив, состоящий из действительных чисел.


Вычислить сумму элементов массива.

program zadacha4_2;
const n=10;

var i:integer;s:real
a:array[1..n] of real;
Begin

for i:=1 to n do {Ввод элем. массива}


begin
writeln('Введите a[',i,']');
read (a[i]);
end;

for i:=1 to n do { Вывод эл. массива}


write (a[i]);
s:=0;

for i:=1 to n do
s:=s+a[i];

writeln;
writeln ('Cумма эл. массива =';s);
End.

В задачах 4_1 и 4_2 все элементы массива вводились с


клавиатуры. Но ввод элементов массива можно осуществлять и
по-другому; задав весь массив в разделе констант.

Решим задачу 4_2 вторым способом.

program zadacha4_2a;

const n=10;
a:array[1..n] of real=(1,0,-2,7.8,9,9,4,0,2.3,1)

var i:integer;s:real

Begin
for i:=1 to n do { Вывод эл. массива}
write (a[i]);
s:=0;

for i:=1 to n do
s:=s+a[i];

writeln;
writeln ('Cумма эл. массива =';s);
End.

стр. 2 из 5
СШ №1 г. Лида

Задача 4-3. Дан массив, состоящий из действительных чисел. Найти


наибольший элемент массива.

program zadacha4_3;
const n=10;
a:array[1..n] of real=(1,0,-2,7.8,9,9,4,0,2.3,1)
var i,k:integer;
s,max:real;
Begin
for i:=1 to n do { Вывод эл. массива}
write (a[i]);
max:=a[1];k:=1;

for i:=2 to n do
if a[i]>max then begin
max:=a[i];
k:=i;
end;
writeln('Наибольший элемент а[',k,’]=’,max);
End.

Задача 4-4. Дан массив, состоящий из целых чисел.


Отсортировать элементы массива в порядке возрастания.
(Метод сортировки, предложенный в алгоритме, называется «сортировкой методом
пузырьков»).

program z4_4;
const n=8;
var i,j,k,d:integer;
a:array[1..n] of integer;
Begin
for i:=1 to n do { Ввод эл. массива}
begin
writeln('Введите a[',i,']');
read (a[i]);
end;
writeln('Первоначальный массив);
for i:=1 to n do { Вывод эл. массива}
write(a[i],' ');

for j:=1 to n-1 do { Сортировка массива }


for i:=1 to n-1 do
if a[i]>a[i+1] then
begin
k:=a[i];
a[i]:=a[i+1];
a[i+1]:=k;
end;
writeln;
writeln('Отсортированный массив');
for i:=1 to n do { Вывод эл. массива}
write(a[i],' ');
End.
стр. 3 из 5
СШ №1 г. Лида
Все рассмотренные выше массивы относятся к одномерным
массивам.
Разберёмся, что представляют собой двухмерные
массивы.
Двухмерный массив является таблицей в памяти
компьютера состоящей из некоторого числа строк
и некоторого числа столбцов.
Если число строк = числу столбцов, то массив
называется квадратным. 1 2 3 4
Адрес ячейки двухмерного массива будем задавать 11
двумя переменными.
Например, адрес заштрихованной ячейки [2,3]. 2
В квадратном массиве имеются две диагонали:
3
главная диагональ; побочная диагональ. 4
Обозначим элементы массива следующим образом:
а11 а12 а13 а14
а21 а22 а23 а24
а31 а32 а33 а34
а41 а42 а43 а44
- У элементов главной диагонали i=j
- Для элементов выше главной диагонали i<j
- Для элементов ниже главной диагонали i>j
- У элементов побочной диагонали i+j=n+1
(где n-размерность массива)
- Для элементов выше побочной диагонали i+j<n+1
- Для элементов ниже побочной диагонали i+j>n+1
Задача 4-5. Дан двухмерный массив, состоящий из целых
чисел. Определить сколько в массиве элементов больших -1 и
меньших 7.
program zadacha4_5;
const n=4;
var i,j,kol:integer;
a:array [1..n,1..n] of integer;
Begin
for i:=1 to n do {Ввод элементов дв. массива}
for j:=1 to n do
begin
writeln ('Введите a[',i,',',j,']');
readln(a[i,j]);
end;
for i:=1 to n do {Вывод элементов массива}
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;
kol:=0;
for i:=1 to n do
for j:=1 to n do
if (a[i,j]>-1) and (a[i,j]<7) then kol:=kol+1;
writeln('Кол-во элем.принадл. диапазону =',kol);
End.
Эту же задачу можно решить и по-другому:
стр. 4 из 5
СШ №1 г. Лида

program zadacha4_5a;
const n=4;
a:array[1..n,1..n] of integer=((1,2,3,4),
(5,6,5,4),
(4,3,2,1),
(1,3,5,7));
var i,j,kol:integer;

Begin
for i:=1 to n do {Вывод элементов массива}
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;

kol:=0;
for i:=1 to n do
for j:=1 to n do
if (a[i,j]>-1) and (a[i,j]<7) then
kol:=kol+1;

writeln('Кол-во элем. принадл. диапазону =',kol);


End.

Задача 4-6. Дан двухмерный массив. Вычислить сумму


элементов стоящих выше главной диагонали.

program zadacha4_6;
const n=4;
a:array[1..n,1..n] of real=((1.5,2.98,3,4),
(5.78,6,5,4.9),
(4.78,3,2,1.7),
(-1,3,5,-7.73));
var i,j:integer;s:real

Begin
for i:=1 to n do {Вывод элементов массива}
begin
for j:=1 to n do
write(a[i,j],' ');
writeln;
end;

s:=0;
for i:=1 to n do
for j:=1 to n do
if i<j then s:=s+a[i,j];

writeln('Cумма эл.находящихся выше гл. диагон=',s);


Еnd.

стр. 5 из 5