Автор работы: Пользователь скрыл имя, 17 Июня 2011 в 20:57, реферат
С понятием "массив" приходится сталкиваться при решении научно-технических и экономических задач обработки совокупностей большого количества значений.
Массив - это множество однотипных элементов, объединённых общим именем и занимающих вкомпьютере определённую область памяти.
{procedure vvod_sl - сюда подставить приведенные выше процедуры}
{procedure print}
Var a:mas; n:byte;
Begin
randomize;
vvod_sl(n, a); print(n, a);
writeln('Сумма минимального и максимального элементов', a[Min(n, a)] + a[Max(n, a)]);
writeln('Количество
отрицательных элементов,
V(n, a);
print(n, a)
End.
При решении практических задач часто приходится иметь дело с различными таблицами данных, математическим эквивалентом которых служат матрицы. Такой способ организации данных, при котором каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен, называется двумерным массивом или таблицей.
Например, данные о планетах Солнечной системы представлены следующей таблицей:
|
Их можно занести в память компьютера, используя понятие двумерного массива. Положение элемента в массиве определяется двумя индексами. Они показывают номер строки и номер столбца. Индексы разделяются запятой. Например: A[7, 6], D[56, 47].
Заполняется двумерный массив аналогично одномерному: с клавиатуры, с помощью оператора присваивания. Например, в результате выполнения программы:
Program Vvod2;
Var I, J : Integer;
A : Array [1..20, 1..20] Of Integer;
Begin
FOR I := 1 TO 3 DO
FOR J := 1 TO 2 DO A[I, J] := 456 + I
End.
элементы массива примут значения A[1, 1] = 457; A[1, 2] = 457; A[2, 1] = 458; A[2, 2] = 458; A[3, 1] = 459; A[3, 2] = 459.
При описании массива задается требуемый объем памяти под двумерный массив, указываются имя массива и в квадратных скобках диапазоны изменения индексов.
При выполнении инженерных и математических расчетов часто используются переменные более чем с двумя индексами. При решении задач на ЭВМ такие переменные представляются как компоненты соответственно трех-, четырехмерных массивов и т.д.
Однако описание массива в виде многомерной структуры делается лишь из соображений удобства программирования как результат стремления наиболее точно воспроизвести в программе объективно существующие связи между элементами данных решаемой задачи. Что же касается образа массива в памяти ЭВМ, то как одномерные, так и многомерные массивы хранятся в виде линейной последовательности своих компонент, и принципиальной разницы между одномерными и многомерными массивами в памяти ЭВМ нет. Однако порядок, в котором запоминаются элементы многомерных массивов, важно себе представлять. В большинстве алгоритмических языков реализуется общее правило, устанавливающее порядок хранения в памяти элементов массивов: элементы многомерных массивов хранятся в памяти в последовательности, соответствующей более частому изменению младших индексов.
Задача 6. Заполнить матрицу порядка n по следующему образцу:
1 2 3 ... n-2 n-1 n
2 1 2 ... n-3 n-2 n-1
3 2 1 ... n-4 n-3 n-2
... ... ... ... ... ... ...
n-1 n-2 n-3 ... 2 1 2
n n-1 n-2 ... 3 2 1
Program Massiv12;
Var I, J, K, N : Integer;
A : Array [1..10, 1..10] Of Integer;
Begin
Write('Введите порядок матрицы: '); ReadLn(N);
For I := 1 To N Do
For J := I To N Do
Begin
A[I, J] := J - I + 1; A[J, I] := A[I, J];
End;
For I := 1 To N Do
Begin
WriteLn;
For J := 1 To N Do Write(A[I, J]:4);
End
End.
Задача 7. Дана целочисленная квадратная матрица. Найти в каждой строке наибольший элемент и поменять его местами с элементом главной диагонали.
Program Obmen;
Var N, I, J, Max,Ind, Vsp : Integer;A : Array [1..15, 1..15] Of Integer;
Begin
WRITE('Введите
количество элементов в
FOR I := 1 TO N DO
FOR J := 1 TO N DO
Begin
WRITE('A[', I, ',', J, '] '); READLN(A[I, J])
End;
FOR I := 1 TO N DO
Begin
Max := A[I, 1]; Ind := 1;
FOR J := 2 TO N DO
IF A[I, J] > Max THEN
Begin
Max := A[I, J]; Ind := J
End;
Vsp := A[I, I]; A[I, I] := A[I, Ind]; A[I, Ind] := Vsp
End;
FOR I := 1 TO N DO
Begin
WriteLn;
FOR J := 1 TO N Do Write(A[I, J] : 3);
End; WriteLn
End.
Задача 8. Задана прямоугольная целочисленная таблица размером m×n. Указать столбец (назвать его номер), где минимальное количество элементов, кратных сумме индексов.
type mas2=array[1..20, 1..20] of
integer;
{Формирование
массива заданного размера с
помощью датчика
procedure create(var m, n: byte; var a: mas2);
var i, j: byte;
begin
write('Введите размеры таблицы: '); readln(m, n);
for i:=1 to m do
for j:= 1 to n do
a[i, j]:= -20+random(41);
end;
{вывод таблицы на экран}
procedure print(const m, n: byte; const a: mas2);
var i, j: byte;
begin
for i:=1 to m do
begin
writeln;
for j:=1 to n do
write(a[i, j]:5);
end;
writeln
end;
{Поиск нужного столбца; результат - в переменной k и, далее, - значение функции}
function solution(const m, n: byte; const a: mas2): byte;
var i, j, k, ke, mke: byte;
begin
k:=1; mke:=m;
for j:=1 to n do
begin
ke:=0;
for i:=1 to m do
if abs(a[i, j]) mod (i+j) = 0 then ke:=ke+1;
if ke<mke then begin mke:=ke; k:=j end
end;
solution := k;
end;
var m, n: byte; a: mas2;
begin
randomize;
create(m, n, a);
print(m, n, a);
writeln('Ответ: ', solution(m, n, a))
end.
Задания
на определение условия задачи по теме
"Массивы"
при x=2?