| 
	
	
	
 Категории: 
Астрономия Биология География Другие языки Интернет Информатика История Культура Литература Логика Математика Медицина Механика Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Транспорт Физика Философия Финансы Химия Экология Экономика Электроника
  
	 | 
   
  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.
   |        
			
	
				
			
		
	
	
	
		
	
			
		
	
	
 |