Категории:
Астрономия Биология География Другие языки Интернет Информатика История Культура Литература Логика Математика Медицина Механика Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Транспорт Физика Философия Финансы Химия Экология Экономика Электроника
|
Mas : array [ IMin .. IMax , JMin .. JMax ] of T
Это означает, что переменная Mas является массивом, который может иметь индексы строкот IMin до IMax , индексы столбцов от JMin до JMax , а также состоит из элементов типа T .
Пример. Var A:array[1..10,1..15] of real;
Это означает, что A – массив, который может содержать от 1 до 10 строк и от 1 до 15 столбцов из элементов вещественного типа.
Доступ к элементу двумерного массива на языке Pascal имеет вид:
Mas [ Ind1 , Ind2 ]
Это означает доступ к элементу массива Mas с индексом строки Ind1 и индексом столбца Ind2.
Пример. a[1,1]; b[i,j].
Это означает элемент массива A в 1-й строке и 1-м столбце, элемент массива B в i-й строке и j-м столбце.
3.Матрица называется квадратной, если у неё количество строк равно количеству столбцов ( ).
Рассмотрим квадратную матрицу: . У ней

4. Фрагменты вычисления характеристик строк и столбцов двумерного массива
Характеристика
| Для каждой строки
| Для каждого столбца
| 1. Сумма
s
| for i:=1 to m do
begin
s[i]:=0;
for j:=1 to n do
s[i]:=s[i]+A[i,j];
end;
| for j:=1 to n do
begin
s[j]:=0;
for i:=1 to m do
s[j]:=s[j]+A[i,j];
end;
| 2. Произведение
p
| for i:=1 to m do
begin
p[i]:=1;
for j:=1 to n do
p[i]:=p[i]*A[i,j];
end;
| for j:=1 to n do
begin
p[j]:=1;
for i:=1 to m do
p[j]:=p[j]*A[i,j];
end;
| 3. Максимальное значение
max
| for i:=1 to m do
begin
max[i]:=A[i,1];
for j:=1 to n do
if A[i,j]>max[i]
then max[i]:=A[i,j];
end;
| for j:=1 to n do
begin
max[j]:=A[1,j];
for i:=1 to m do
if A[i,j]>max[j]
then max[j]:=A[i,j];
end;
| 4. Минимальное значение
min
| for i:=1 to m do
begin
min[i]:=A[i,1];
for j:=1 to n do
if A[i,j]<min[i]
then min[i]:=A[i,j];
end;
| for j:=1 to n do
begin
min[j]:=A[1,j];
for i:=1 to m do
if A[i,j]<min[j]
then min[j]:=A[i,j];
end;
|
Фрагменты вычисления характеристик одномерного массива
Характеристика
| Для всех элементов ai
| Для части элементов
| 1.Сумма
s
| s:=0;
for i:=1 to n do
s:=s+A[i];
| s:=0;
for i:=1 to n do
if A[i]>z then
s:=s+A[i];
| 2.Количество
k
| k:=n;
| k:=0;
for i:=1 to n do
if A[i]>z then
k:=k+1;
| 3.Произведение
p
| p:=1;
for i:=1 to n do
p:=p*A[i];
| p:=1;
for i:=1 to n do
if A[i]>z then
p:=p*A[i];
| 4.Максимальное значение
max
| max:=A[1];
for i:=2 to n do
if A[i]>max then
max:=A[i];
| max:=-1E10;
for i:=1 to n do
if (A[i]>max) and (A[i]>z) then
max:=A[i];
| 5. Минимальное значение
min
| min:=A[1];
for i:=2 to n do
if A[i]<min then
min:=A[i];
| min:=1E10;
for i:=1 to n do
if (A[i]<min) and (A[i]>z) then
min:=A[i];
| 6. Среднее значение
sr
| s:=0;
for i:=1 to n do
s:=s+A[i];
sr:=s/n;
| s:=0; k:=0;
for i:=1 to n do
if A[i]>z then
begin
s:=s+A[i]; k:=k+1;
end;
sr:=s/k;
|
5) Фрагменты операций с двумерными массивами
1. Ввод элементов массива
| writeln('Введи массив A');
for i:=1 to m do
for j:=1 to n do
read(A[i,j]);
| 2. Вывод элементов массива
| writeln('Массив A');
for i:=1 to m do
begin
for j:=1 to n do
write(A[i,j]:10:3);
writeln;
end;
| 3. Замена элементов массива на величину z
| for i:=1 to m do
for j:=1 to n do
A[i,j]:=z;
| 4. Увеличение элементов массива на величину z (аналогично уменьшение, умножение, деление)
| for i:=1 to m do
for j:=1 to n do
A[i,j]:=A[i,j]+z;
| 5. Вычисление элементов массива B прибавлением к элементам массива A величины z (аналогично отниманием, умножением, делением)
| for i:=1 to m do
for j:=1 to n do
B[i,j]:=A[i,j]+z;
|
Фрагменты операций с одномерными массивами
1.Ввод элементов массива
| writeln('Введи массив A');
for i:=1 to n do
read(A[i]);
| 2.Вывод элементов массива
| writeln('Массив A');
for i:=1 to n do
writeln(A[i]:10:3);
| 3.Замена элементов массива на величину z
| for i:=1 to n do
A[i]:=z;
| 4.Увеличение элементов массива на величину z
(аналогично уменьшение, умножение, деление)
| for i:=1 to n do
A[i]:=A[i]+z;
| 5.Вычисление нового массива B прибавлением к элементам массива A величины z
(аналогично вычитанием, умножением, делением)
| for i:=1 to n do
B[i]:=A[i]+z;
| 6.Вычисление индекса максимального элемента imax
(аналогично минимального)
| max:=A[1]; imax:=1;
for i:=2 to n do
if A[i]>max then
begin
max:=A[i]; imax:=i;
end;
| 7. Перестановка 1-го и 2-го элементов массива
| c:=A[1]; A[1]:=A[2]; A[2]:=c;
|
6. К примеру, при вычислении суммы для строки, сначала задается цикл для строк, в котором при переходе на следующую строку значение переменной обнуляется, и далее следует цикл для столбцов, в котором значение каждого столбца складывается с переменной. А при вычислении суммы для столбцов все то же самое,но сначала задается цикл для столбцов, а потом для строк.
8. Что означает каждая строка в приведённой программе
9.
Program lab5;
| Программа по имени lab5
| Var
| Раздел описания переменных
| A: array [1..10,1..15] of real;
| А-массив,который может содержать от 1 до 10 строк и от 1 до 15 столбцов из элементов вещественного типа
| i, j, m, n: integer; s, p, min, max: real;
| Элементы i, j, m, n-целые числа; s, p, min, max-переменные вещественного типа
| Begin
| Начало раздела операторов(или начало составного оператора)
| writeln('Введи m,n'); read(m,n);
| Ввод пояснительного текста 'Введи m,n'; Ввод переменных m,n
| writeln('Введи массив A');
| Вывод пояснительной надписи
| for i:=1 to m do
| Задание цикла с параметром для строк
| for j:=1 to n do
| Задание цикла с параметром для стодбцов
| read(A[i,j]);
| Чтение данных с клавиатуры(о значениях элементов массива)
| s:=0; p:=1; min:=A[1,1]; max:=A[1,1];
| Присваивание значений переменным
| for i:=1 to m do for j:=1 to n do
| Задание цикла с параметром для строк и столбцов
| begin
| Начало раздела операторов(или начало составного оператора)
| s:=s+A[i,j]; p:=p*A[i,j];
| Переменной s присваивается значение s+A[i,j]; (вычисление суммы)
Переменной р присваивается значение p*A[i,j] (вычисление произведения)
| if A[i,j]<min then min:=A[i,j];
| Оператор условного перехода, в случае выполнения присваивающий переменной значение элемента массива
| if A[i,j]>max then max:=A[i,j];
| Оператор условного перехода, в случае выполнения присваивающий переменной значение элемента массива
| end;
| Конец раздела операторов
| writeln('s=',s:10:3,' p=',p:10:3,
' min=',min:10:3,' max=',max:10:3);
| Вывод пояснительного текста 's,p,min,max=' и числового значения переменной s, p,min,max, занимающего 10 позиций, в т.ч. 3 цифры после запятой
| End.
| Конец программы
|
Исправленные задачи
| Program lab5a;
Var
A: array [1..10,1..15] of real;
i, j, m, n: integer; s, p: real;
Begin
writeln('Введи m,n'); read(m,n);
writeln('Введи массив A');
for i:=1 to m do
for j:=1 to n do
read(A[i,j]);
s:=0; p:=1;
for i:=1 to m do for j:=1 to n do
if i<j then begin
s:=s+A[i,j]; p:=p*A[i,j];
end;
writeln('s=',s:10:3,' p=',p:10:3);
End.
|
| Program lab5b;
Var
A: array [1..10,1..15] of real;
i, j, m, n: integer; min, max: real;
Begin
writeln('Введи m,n'); read(m,n);
writeln('Введи массив A');
for i:=1 to m do
for j:=1 to n do
read(A[i,j]);
begin
min:=1E10;
for i:=1 to m do
for j:=1 to n do
if (a[i,j]<0) and (a[i,j]<min) then min:=A[i,j];
end;
begin
for i:=1 to m do
for j:=1 to n do
max:=-1E10;
if (A[i,j]>max) and (a[i,j]<0) then max:=A[i,j];
end;
writeln('min=',min:10:3,' max=',max:10:3);
End.
|
| Program lab5c;
Var
A: array [1..10,1..15] of real;
i, j, m, n: integer; nul,s,sr,k: real;
Begin
writeln('Введи m,n'); read(m,n);
writeln('Введи массив A');
for i:=1 to m do for j:=1 to n do
read(A[i,j]);
nul:=0;
for i:=1 to m do for j:=1 to n do
if a[i,j]=0 then nul:=nul+1;
k:=0; s:=0;
for i:=1 to m do for j:=1 to n do
if a[i,j]>0 then begin
s:=s+a[i,j]; k:=k+1;
end;
sr:=s/k;
writeln('Среднее значение положительных=',sr:10:3,' Количество нулевых элементов=',nul:10:3);
End.
|
Дополнительное задание
| Program dz5_1;
Var
b: array [1..100,1..100] of real;
i, j, m, n: integer;
s,k: real;
Begin
writeln('Введите количество строк m');
read(m);
writeln('Введите количество столбцов n');
read(n);
for i:=1 to m do for j:=1 to n do
begin
write('Введи b[',i,',',j,']='); readln(b[i,j]);
end;
begin
s:=0;
for i:=1 to m do for j:=1 to n do
if b[i,j]>0 then begin
s:=s+b[i,j];
end;
k:=0;
for i:=1 to m do for j:=1 to n do
if (b[i,j]>=10) and (b[i,j]<=20) then k:=k+1;
writeln ('Сумма положительных= ', s:6:3);
writeln ('Кол-во эл-ов в диапазоне от 10 до 20= ', k:6:3);
end;
End.
|
| Program dz5_2;
Var
c: array [1..100,1..100] of real;
i, j, m, n: integer;
s,sr,p: real;
Begin
writeln('Введите количество строк m');
read(m);
writeln('Введите количество столбцов n');
read(n);
for i:=1 to m do for j:=1 to n do
begin
write('Введи C[',i,',',j,']='); readln(c[i,j]);
end;
begin
s:=0;
for i:=1 to m do for j:=1 to n do
s:=s+c[i,j];
sr:=s/n;
end;
begin
p:=1;
for i:=1 to m do for j:=1 to n do
if (c[i,j]>sr) then p:=p*c[i,j];
writeln ('Среднее значение=', sr);
writeln ('Произведение эл-ов больше среднего значения=', p);
end;
End.
|
| Program dz5_3;
Var
d: array [1..100,1..100] of real;
i, j, m, n: integer;
s,k,sr,min: real;
Begin
writeln('Введите количество строк m');
read(m);
writeln('Введите количество столбцов n');
read(n);
for i:=1 to m do for j:=1 to n do
begin
write('Введи D[',i,',',j,']='); readln(d[i,j]);
end;
begin
min:=d[1,1];
for i:=2 to n do for j:=2 to n do
if d[i,j]<min then
min:=d[i,j];
end;
s:=0; k:=0;
for i:=1 to n do for j:=1 to n do
if d[i,j]<>min then
begin
s:=s+d[i,j]; k:=k+1;
end;
sr:=s/k;
writeln('min=', min:6:3);
writeln('Ср.значение эл-ов, не совпадающих с min=', sr:6:3);
End.
|
| Program dz5_4;
Var
l: array [1..100,1..100] of real;
i, j, m, n: integer;
s,max: real;
Begin
writeln('Введите количество строк m');
read(m);
writeln('Введите количество столбцов n');
read(n);
for i:=1 to m do for j:=1 to n do
begin
write('Введи L[',i,',',j,']='); readln(l[i,j]);
end;
begin
max:=-1E10;
for i:=1 to n do for j:=1 to n do
if (l[i,j]>max) and (l[i,j]<0) then
max:=l[i,j];
writeln('Максимальный среди отрицательных', max:6:3);
end;
if m<>n then writeln ('У матрицы нет главной диагонали') else
begin
s:=0;
for i:=1 to n do for j:=1 to n do begin
if i=j then s:=s+l[i,j];
end;
writeln('s=', s:6:3);
end;
End.
|
| Program dz5_5;
Var
p: array [1..100,1..100] of real;
i, j, n: integer;
Begin
writeln('Введите количество строк и столбцов n');
read(n);
for i:=1 to n do for j:=1 to n do
begin
write('Введи P[',i,',',j,']='); readln(p[i,j]);
end;
begin
for i:=1 to n do for j:=1 to n do begin
if i<j then p[i,j]:=0
else p[i,j]:=round(p[i,j]);
end;
writeln('Массив A');
for i:=1 to n do
begin
for j:=1 to n do
write(P[i,j]:10:3);
writeln;
end;
end;
End.
|
|