Составление программ с структурированными данными.
2.1 Составление программ с массивами
пример1 {организация ввода и вывода матрицы }
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a:array[1..4,1..3] of byte;
i,j:byte;
begin
writeln('Enter elementi masiva');
for i:=1 to 4 do
for j:=1 to 3 do
readln(a[i,j]);
writeln; writeln;
readln;
for i:=1 to 4 do
begin
for j:=1 to 3 do
write(a[i,j]:2,' ');
writeln;
end;
readln
end.
Пример2 Составить программу нахождения суммы элементов массива.
Прежде чем находить сумму, надо заполнить массив элементами (числами), а это можно сделать только поэлементно, т.е. присвоить значение сначала первому элементу, затем второму и т.д.
Рассмотрим два способа заполнения массива:
Первый способ заполнения одномерного массива - с клавиатуры:
const n=30;
var m: array [1..n] of integer; I:integer;
. . . . . . . . .
begin
writeln(‘введите’, n , ‘ целых чисел’ );
for I:=1 to n do readln m[i] ; . . .
end.
Второй способ заполнения - с помощью генератора случайных чисел:
Функция random(n) выбирает случайное число из отрезка от 0 до n-1.
Этот способ более удобен, когда в массиве много элементов, а их точные значения не очень важны.
Const m=30; n=51; {m – количество элементов; n – используется в генераторе}
Var a:array[1..m] of integer; I: integer;
. . . . . . . . .
begin
for I:=1 to m do a[I]:= - 25 + random(n);. . .
end.
Числа будут выбираться из отрезка 0 – 50, значит, очередному элементу будет присвоено значение -25+ случайное число из отрезка от 0 до 50.
Решение предложенной выше задачи:
Для вычисления суммы будем использовать так называемый алгоритм накопления, который
заключается в том, что для вычисления суммы n слагаемых необходимо n раз выполнить оператор:
S := S+ i-oe слагаемое;
где i = 1, 2, 3,..., n; Если указанный оператор выполняется первый раз, т.е. i = 1, то S должна содержать 0.
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
const n=100; m=61;
var a : array[1..100] of integer;
I,s: integer;
begin
s:=0;
for I:=1 to n do
begin
a[I]:= -30 + random(m);
write(a[i]:2,' ');
s:=s + a[I]
end;
writeln;
writeln (' suma = ' , s:5) ;
readln
end.
пример 3: сумма элементов 2-мерного массива
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a:array[1..4,1..3] of byte;
i,j,s:byte;
begin
writeln('Enter elementi masiva');
for i:=1 to 4 do
for j:=1 to 3 do
readln(a[i,j]);
writeln; writeln;
readln;
s:=0;
for i:=1 to 4 do
begin
for j:=1 to 3 do
s:=s+a[I,j];
write(a[i,j]:2,' ');
writeln;
end;
writeln (' suma = ' , s:5) ;
readln
end.
Пример 1_а
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils;
type mas= array[1..4,1..3] of byte;
var b:mas;
i,j:byte;
procedure vvod(var a:mas);
begin
writeln('Enter elementi masiva');
for i:=1 to 4 do
for j:=1 to 3 do
readln(a[i,j]);
end;
procedure vivod(a:mas);
begin
for i:=1 to 4 do
begin
for j:=1 to 3 do
write(a[i,j]:2,' ');
writeln;
end;
end;
begin
vvod(b);
writeln; writeln;
readln;
vivod(b);
readln
end.