Матрицы в Си
Матрица это набор объектов, которые хранятся в виде таблицы. У каждой матрицы есть имя, единый тип всех ее объектов.
Обявление матрицы в Си
Также как и переменные матрицу в Си необходимо объявить перед тем как с ней работать, необходимо указать ее тип, ее имя , количество строк -1 и количество столбцов -1. Нумерация столбцов и строк идет с 0.
Тип матрицы Имя [количество строк-1][количество столбцов-1];
Например:
int A[8][9] ; //объявляет целочисленную матрицу с именем A , у которой 9 строк и 10 столбцов
После объявления матрицы, с ее элементами можно работать. Чтобы обратитсья к элементу матрицы нужно указать имя матрицы в первых квадратных скобках указать номер строки, во вторых квадратных скобках указать номер столбца.
Например:
A[0][1]=10; // элементу матрицы с номер строки 0 и столбца 1 присваивается значение 10
printf(“%d”, A[0][1]);// выводит на экран элемент матрицы с номер строки 0 и столбца 1
Задание матрицы в Си
Чтобы работать с матрицей в Си, необходимо присвоить начальные значения всех ее элементов.
Для работы со всеми элементами матрицы используется вложенные циклы for
В главном цикле “пробегаем” по всем строкам, а во вложенном “пробегаем” по всем столбцам для каждой строки.
// “пробегаемся” по всем строкам. Нумерация строк с 0.
for (i=0; i < количество строк; i++)
{
// вложенный цикл, “пробегаемся” по всем столбцам для Нумерация столбцов с 0.
for (j=0; j < количество столбцов; j++)
{
…Имя матрицы [i][j]…// работаем с элементом матрицы с номером строки i и номером столбца j
}
}
Пример программы 22. Программа задаёт целочисленную матрицу размером 10 на 10 и заполняет ее случайными числами в диапазоне, который укажет пользователь и выводит ее на экран.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
int a[9][9]; // объявление матрицы 10 на 10
int i,j; // счетчики циклов
int range;// диапазон в котором присваиваются значения элементов матрицы
//ввод диапазона случайных чисел
printf("введите диапазон заполнения\n");
scanf("%d", &range);
// ввод массива
// пробегаем по всем строкам
for (i=0; i<10; i++)
{
// пробегаем по всем столбцам для данной строки i
for(j=0; j<10; j++)
{
a[i][j]=rand() % range+1; // прсиваиваем элементу матрицы a с номером строки i и номер столбца j случайного значения в диапазоне от 0 до 9
}
}
// вывод массива
printf ("массив\n");
// пробегаем по всем строкам
for (i=0; i<10; i++)
{
// пробегаем по всем столбцам для данной строки i
for(j=0; j<10; j++)
{
printf("%d \n", a[i][j]);
}
// переход на следующую строку
printf("\n");
}
getch();
}
При выводе матрицы на экран в Си для каждой строки мы совершаем переход на следующую строку с помощью оператора printf(" ");
Ввод матрицы в Си с помощью клавиатуры
Пример программы 23. Задаётся матрица размера 3 на 3 с помощью клавиатуры и ищется ее максимальный элемент. Он выводится на экран. При поиске максимального элемента, мы создаем специальную переменную max и присваиваем ей значение элемента a[0][0]. Пробегаем по всем элементам матрицы с помощью вложенного цикла, сравнивая текущий элемент с максимумом, если текущий элемент больше максимума, то максимуму присваивается значение этого элемента.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main()
{
int a[2][2]; // объявление матрицы 3 на 3
int i,j; // счетчики циклов
int max; // переменная для хранения максимального элемента матрицы
// ввод массива
// пробегаем по всем строкам
for (i=0; i<3; i++)
{
// пробегаем по всем столбцам для данной строки i
for(j=0; j<3; j++)
{
// ввод текущего элемента матрицы с клавиатуры
printf("Введите элемент матрицы [%d][%d]", i, j);
scanf("%d", &a[i][j]);
printf("\n");
}
// переход на следующую строку
}
// вывод массива
printf ("массив\n");
// пробегаем по всем строкам
for (i=0; i<3; i++)
{
// пробегаем по всем столбцам для данной строки i
for(j=0; j<3; j++)
{
printf("%d ", a[i][j]);
}
// переход на следующую строку
printf("\n");
}
// поиск максимума
max=a[0][0];
// пробегаем по всем строкам
for (i=0; i<3; i++)
{
// пробегаем по всем столбцам для данной строки i
for(j=0; j<3; j++)
{
// сравниваем текущий элемент массива с максимумом
if (a[i][j]>max)
{
max=a[i][j];
}
}
}
// вывод максимального элемента
printf ("Максимальный элемент массива %d", max);
getch();
}
Вернуться к содержанию
Перейти к теме Работа с файлами в Си
Полезно почитать по теме массивы и матрицы в си
Массивы в си
Игра на си Крестики Нолики
Поделиться:
Нет комментариев. Ваш будет первым!