Программы линейной структуры. Простейшие программы циклической структуры. Разветвления, циклы и разветвления. Простейшие алгоритмы обработки массивов, страница 18

При выводе двух или нескольких одномерных массивов одного размера часто удобно вывести их как расположенные параллельно столбцы.

Пример.

  …

printf (“ Массивы \n”);

printf (“(“ Индекс   A      B   \n  ”); 

for ( i= 0; i<SIZE; i++)

        printf (“  %i          %i       %i   \n”, i+1,a[i] , b[i]);

printf (“\n Для завершения нажмите <Enter>”);

getch();

   …

Вывод двух или более массивов различных размеров, как пра­вило, осуществляется в строку. Вывод нового массива начинается с новой строки.

Двумерные массивы необходимо выводить в привычном виде (по строкам), начиная вывод новой отроки массива в новую строку экрана.

  1. Суммирование элементов массива.

     Для одномерного массива  A={a1, .... аn} необходимо вычислить (см.  программу 4.1)

                                                                       n

                                                                 S= Sai         

                                                                      i=1

Программа 4.1

int S=0;

 for ( i = 0; i<N; i++)

      S=S+a[i] ;

 printf ("S->%i " ,S );

Для двумерного массива B размером N*M необходимо вычислить  (см.  программу 4.2)

                                                                      n  m

                                                                 S= SSbij         

                                                                   i=1 j=1

Программа 4.2

int S=0;

 for ( i = 0; i<N; i++)

   for ( j = 0; i<M; j++)

           S=S+b[i][j] ;

 printf ("S->%i " ,S );

  1. Суммирование диагональных элементов матрицы (вычисление следа матрицы).

Для матрицы В размером N*N необходимо вычислить (см. программу 4.3),      

                                                                      N 

                                                  S= Sb i i         

                                                                     i=1

Программа 4.3

int S=0;

 for ( i = 0; i<N; i++)

      S=S+b[i][i] ;

 printf ("S->%i " ,S );

  1. Суммирование двух массивов.

Для одномерных массивов А и В размером N необходимо вычислить сi=ai+bi, i= 1,2.... N.

Программа 4.4

int C[N];

 for ( i = 0; i<N; i++)

      C[i]=b[i]+a[i] ;

        …

Для двумерных массивов А и В размером NXM необходимо вы­числить сi j=ai j+bi j , i=l, 2, ..., N; j=1, 2,... М (см. програм­му 4.5).


Программа 4.5

int C[N][M];

 for ( i = 0; i<N; i++)

   for ( j = 0; j<M; j++)

      C[i][j]=b[i][j]+a[i][j] ;

        …

  1. Суммирование элементов заданной строки матрицы.

Для  матрицы В размером N*M необходимо вычислить

                                                                      m 

                                                  S= Sbi j         

                                                                     j=1

т.е. необходимо вычислить сумму элементов i-ой строки. Значит надо изменять индекс столбцов по j.

Программа 4.6

           …

i=5;

int S=0;

 for ( j = 0; j<N; j++)

      S=S+b[i][j] ;

       …

  1. Суммирование элементов строк матрицы.

Необходимо вы­числить сумму элементов каждой строки матрицы В размером N*M. Результат получим в виде вектора D.

Программа 4.7

int D[N]={0};   //обнулим массив

 for ( i = 0; i<N; i++)

    for ( j = 0; j<M; j++)

          D[i]=D[i] + b[i][j] ;

        …

 8. Транспонирование матрицы.

Необходимо заменить строки матрицы A размером N*M ее столбцами, а столбцы — строками (см. программу 4.8).   Используем для этого  вспомогательный двумерный массив B.


Программа  4.8

int B[N][M];

 for ( i = 0; i<N; i++)

    for ( j = 0; j<M; j++)

          B[i][j]=A[j][i] ;