Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

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.