Конспект лекций по программированию для начинающих. Гладков В.П. - 186 стр.

UptoLike

Составители: 

188
9 3 7 3 1 1 3 3 7 9
6 7 8 9 1 1 7 9 8 6.
От сортировки одномерного массива этот случай отличается только тем, что
переставлять нужно не два сравниваемых элемента, а два столбца:
for i:=1 to n-1 do
for j:=i+1 to n do
if a[2,i]>a[2,j]
then for k:=1 to n do
begin r:=a[k,i]; a[k,i]:=a[k,j]; a[k,j]:=r
end.
Пример 11.47. Найти произведение матрицы n·k на матрицу k·m.
Решение. Матрицы представляем в виде двумерных массивов. В результате
получается матрица - двумерный массив n·m, где элемент
c = a b
ij ip pj
p=1
k
, т.е.
каждый элемент ответа равен сумме произведений элементов i-й строки массива а
на соответствующие элементы j-го столбца массива b.
for i:=1 to n do
for j:=1 to m do
begin c[i,j]:=0;
for p:=1 to k do c[i,j]:=c[i,j]+a[i,k]*b[k,j]
end.
11.9. Решение задач с использованием массивов
В этом разделе приводятся примеры решения более сложных задач с
использованием массивов. Для их решения требуется хорошо знать и умело
применять идеи, рассмотренные в предыдущих разделах.
Пример 11.48. От острова Буяна до царства славного Салтана месяц пути.
Капитан ежедневно записывает в вахтенный журнал пройденное расстояние.
Определить, в какую десятидневку был пройден больший путь.
Решение 1. Вахтенный журнал можно представить в виде одномерного массива,
содержащего 30 элементов. Отсюда получается решение.
s1=0;
for i:=1 to 10 do s1:=s1+a[i];
s2:=0;
for i:=11 to 20 do s2:=s2+a[i];
s3:=0;
for i:=21 to 30 do s3:=s3+a[i];
write('наибольший путь был пройден в ');
if s1>s2
then if s1>s3
then write('первую')
else write('третью')
else if s2>s3
then write('вторую')
else write('третью');
                                    188

                      93731                 13379
                      67891                 1 7 9 8 6.
   От сортировки одномерного массива этот случай отличается только тем, что
переставлять нужно не два сравниваемых элемента, а два столбца:
   for i:=1 to n-1 do
   for j:=i+1 to n do
      if a[2,i]>a[2,j]
      then for k:=1 to n do
              begin r:=a[k,i]; a[k,i]:=a[k,j]; a[k,j]:=r
              end.
   Пример 11.47. Найти произведение матрицы n·k на матрицу k·m.
   Решение. Матрицы представляем в виде двумерных массивов. В результате
                                                                k
получается матрица - двумерный массив n·m, где элемент c ij =   ∑a
                                                                p=1
                                                                      ip   ⋅ b pj , т.е.

каждый элемент ответа равен сумме произведений элементов i-й строки массива а
на соответствующие элементы j-го столбца массива b.
    for i:=1 to n do
    for j:=1 to m do
    begin      c[i,j]:=0;
               for p:=1 to k do c[i,j]:=c[i,j]+a[i,k]*b[k,j]
    end.

             11.9. Решение задач с использованием массивов
   В этом разделе приводятся примеры решения более сложных задач с
использованием массивов. Для их решения требуется хорошо знать и умело
применять идеи, рассмотренные в предыдущих разделах.
   Пример 11.48. От острова Буяна до царства славного Салтана месяц пути.
Капитан ежедневно записывает в вахтенный журнал пройденное расстояние.
Определить, в какую десятидневку был пройден больший путь.
   Решение 1. Вахтенный журнал можно представить в виде одномерного массива,
содержащего 30 элементов. Отсюда получается решение.
   s1=0;
   for i:=1 to 10 do s1:=s1+a[i];
   s2:=0;
   for i:=11 to 20 do s2:=s2+a[i];
   s3:=0;
   for i:=21 to 30 do s3:=s3+a[i];
   write('наибольший путь был пройден в ');
   if s1>s2
   then       if s1>s3
              then write('первую')
              else write('третью')
   else       if s2>s3
              then write('вторую')
              else write('третью');