Среди многомерных массивов наиболее часто используемым является двумерный массив, называемый по-другому матрицей. Матрицы широко используются в линейной алгебре, теории графов, вычислительных методах, математической статистике, физике, механике, а также во многих других фундаментальных и прикладных науках. Рассмотрим несколько задач, связанных с матрицами. Итак, первая задача – это объявление такого массива и заполнение его некоторыми значениями. В реальных задачах значения берутся реальные, которые, например, вводят операторы. У нас на это может не быть времени, поэтому самый быстрый и простой способ заполнения двумерного (да, и не только двумерного) массива – это заполнение случайными числами.
//Объявление массива
int matrix[100][100]
//Задание размера массива
int n;
printf("Введите размер массива:\n");
scanf("%d", &n);
//Заполнение массива случайными целыми числами
for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
matrix[i][j] = rand()%1000;
}
}
Если нужно заполнить массив случайными вещественными числами, то можно использовать следующий прием:
|
|
- получить случайное число с помощью функции rand();
- взять его по модулю 10000, т.е. rand()%10000;
- получится целое число из диапазона от 0 до 9999;
- поделить это число на 100;
- получится число из диапазона от 0 до 99.99.
//Заполнение массива
//случайными вещественными числами
for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
matrix[i][j] = (float) (rand()%10000)/100;
}
}
Теперь обратимся к выводу матрицы на экран. Особенность заключается в том, что элементы матрицы нужно вывести не подряд, а согласно структуре ее строк и столбцов; кроме того, столбцы должны быть ровными. Для этого нужно, во-первых, переводить курсор на новую строку после вывода каждой строки и, во-вторых, использовать модификатор количества знаков, отводимых под значение, чтобы все значения занимали одинаковое количество позиций.
//Вывод матрицы на экран
for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
printf(" %5d ", numbers[i][j]);
}
printf("\n");
}