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);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.