Циклы. Инициализация массива размерности n случайными целыми положительными значениями от 0 до 32767, страница 10

                printf (" %7d %c", a[i][j], (j==m-1)?'\n':' ');

}

return 0;

}

Вывод элементов двумерного массива осуществляется по строкам:

#include <stdio.h>

const int n = 9;

const int  m = 3;

main () {

static int a[n][m];

int i, j;

// ………   ввод массива

//вывод массива:

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

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

printf ("a[%d][%d]=%d \t%c", i, j, a[i][j], (j==m-1)? '\n': ' ');

return 0;

}

2. для вещественных значений (в предположении, что количество знаков в целой части числа не превосходит 3, а количество знаков после запятой равно 4):

#include <stdio.h>

#include <stdlib.h>

#define n 9

#define m 3

main () {

static double a[n][m];

int i, j;

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

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

{a[i][j] = rand();

printf ("%10.4lf  %c", a[i][j], (j==m-1)? '\n': ' ');

}

return 0;

}

или

#include <iostream.h>

#include <iomanip.h>

#include <stdlib.h>

const int n = 10;

const int  m = 5;

main ()

{static int a[n][m];

int i, j;

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

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

{a[i][j] = rand();             //получение элемента массива

cout << setw(10);     

cout << setprecision(4) << setiosflags(ios::fixed);

cout << a[i][j];

                         if (!((j+1) %m))  cout << endl;

}

return 0;

}

Операции над матрицами:

Пример 1: пусть задана матрица A[n][n], в которой Аij – оценка i-го студента на j-м экзамене. Найти средний балл каждого студента S[n] и количество K плохих оценок  (1, 2, 3)   по каждому предмету:

#include <stdio.h>

#include <stdlib.h>

const int n = 6;

const int  m = 5;

main ()

{staticint A[n][m];

int i, j, K;

for (i=0; i<n; i++)                   //заполнение и вывод матрицы

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

              {A[i][j] = rand() % 10;

                printf (" %7d %c", A[i][j], (j==m-1)?'\n':' ');

}

double S[n], Sum;

for ( i=0; i<n; i++)    //вычисление и вывод средних баллов по каждому студенту

{ Sum =0;

for (j=0; j<m;)

Sum += A[i][j++];

S[i] = Sum/m;

printf ("ball stud %2d:   %9.2lf \n",i+1,S[i] );

}

printf ("\nK   po predmety: \n");

for (j=0; j<m; j++)        //вычисление количества K плохих оценок по предмету:

{for (K=0, i=0; i<n; i++)   //цикл по студентам

if (A[ i ][ j ] ==1 || A[ i ][ j ] ==2 || A[ i ][ j ] ==3)   K++;

printf ("      %2d  ",K );                              

printf ("\n \n");

return 0;

}

Пример 2: найдем наибольший элемент в матрице и номер строки и столбца, на пересечении которых он находится:

#include <stdio.h>

#include <stdlib.h>

const int n = 6;

const int  m = 5;

main ()

{static int A[n][m];

int i, j;

for (i=0; i<n; i++)                   //заполнение и вывод матрицы

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

{A[i][j] = rand() % 10;

printf (" %7d %c", A[i][j], (j==m-1)?'\n':' ');

}

int MyMax, Imax, Jmax;

MyMax=A[0][0];                //поиск максимального элемента и его номера

Imax = Jmax = 0;

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

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

if (A[i][j] > MyMax)

{MyMax=A[i][j];

Imax=i;

Jmax=j;

}

printf (" %3d   %3d    %3d\n", MyMax, Imax, Jmax); 

return 0;

}

Пример 3: найдем средние значения элементов главной  и побочной диагоналей квадратной матрицы:

#include <stdio.h>

#include <stdlib.h>

const int n = 5;

main ()

{static double A[n][n];

int i, j;

for (i=0; i<n; i++)                   //заполнение и вывод матрицы

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

{A[i][j] = rand() % 10;

printf (" %7.1lf %c", A[i][j], (j==n-1)?'\n':' ');

}

double Sum=0;

for (i=0; i<n; i++) //вычисление среднего значения элементов главной диагонали

Sum +=A[i][i];

Sum /=n;

printf (" %5.2lf\n", Sum);