- •Лекція №6 Структурований тип даних
- •Регулярні типи. Масив.
- •Масиви у мові Pascal.
- •Використання одновимірних масивів.
- •Var a:array [1..10] of real;
- •I,n,k:integer;
- •I,n,k,l:integer;
- •Var I,n:integer;
- •Var I, n, k: integer;
- •X, y: array[1..50]of real;
- •Var I, n, k, max, min: integer;
- •X: array[1..50] of integer;
- •Var I, j, n, s: integer;
- •X: array[1..50] of integer;
- •Var I, n, k: integer;
- •Var I, n, k: integer;
- •I: integer;
- •Var a: array [1..10] of integer;
- •Var s,I:integer;
- •Var I:integer;
- •Var I:integer;
- •Var I:word;
- •Контрольні запитання.
Var I, j, n, s: integer;
X: array[1..50] of integer;
f : boolean;
begin
readln(n);
for i:=1 to n do read (x[i]);
writeln;
s:=0;
for i:=1 to n do
begin
if:=true;{робимо припущення, що масив складається з різних елементів }
for i:=1 to n do
if (x[i]=x[j]) and (i<>j) then f:=false{знайдено порушення порядку};
if f = true then s:=s+x[i];
end;
writeln(s:7);
end.
Якщо якісь дані зберігаються в масиві, інколи треба відкинути деякі елементи або включити деякі елементи в масив.
Приклад 4.7. Вилучити з заданого масиву дійсних чисел мінімальний елемент.
Щоб вилучити елемент під номером k, треба зсунути наступні елементи вліво на один номер:
k k+1 k+2 . . . n
|
|
|
|
|
|
|
Var I, n, k: integer;
min: real;
a : array [1..50] of real;
begin
readln(n);
for i:=1 to n do read (a[i]);
writeln;
min:=a[1]; k:=1;
for i:=1 to n do
if a[i]<min then
begin
min:=a[i];
k:=i;
end;
for i:= k+1 to n do a[i-1]:=a[i];
for i:=1 to n-1 do write (a[i]:5:2);
readln;
end.
Приклад 4.8. Перед мінімальним елементом масиву X(N) включити до масиву елемент, що дорівнює заданому Y.
Спочатку треба звільнити місце для нового елемента. Тому треба зрушити всі елементи, що розташовані від мінімального елемента до кінця масиву вправо. Цю дію треба виконувати з кінця масиву. А далі на вільне місце поміщається новий елемент.
k k+1 k+2 … n
|
|
|
|
|
|
|
Var I, n, k: integer;
min, y: real;
a: array [1..50] of real;
begin
readln(y);
readln(n);
for i:=1 to n do read(a[i]);
writeln;
min:=a[1]; k:=1;
for i:=1 to n do
if a[i]<min then
begin
min:=a[i];
k:=i;
end;
for i:= n downto k do a[i+1]:=a[i];
a[k]:=y;
for i:=1 to n+1 do write(a[i]:5:2);
readln;
end.
Масиви можна використовувати як параметри у функціях та процедурах. При цьому треба обов’язково вказати на описаний до підпрограми тип:
Приклад 4.9. За допомогою процедури знайти суму елементів масиву.
type mas = array [1..8] of real;
var a: mas;
s:real;
I: integer;
procedure sum (x: mas; n: integer; var s: real);
begin
for i:=1 to n do
s:= s +x[i];
end;
begin
for i:=1 to 8 do
read(a[i]);
writeln;
sum(a,8,s);
writeln(‘s=’, s);
end;
Але для одновимірних масивів, які використовуються як параметри, існує поняття відкритого масиву. В такому випадку опис параметру - масиву задається таким чином:
a:arrayofбазовий тип;
При подальшій роботі з елементами цього масиву для найменшого значення індексу використовують функцію low(a), а для найбільшого - функцію high(a).
Приклад 4.10.Скласти процедуру, яка виконує основні операції над одновимірними масивами.
Var a: array [1..10] of integer;
procedure mas(var b:array of integer); {процедура виконує введення одновимірного масиву та знаходить суму парних елементів.}