С какого элемента считаются матрицы c
Перейти к содержимому

С какого элемента считаются матрицы c

  • автор:

Матрицы в Си

Матрица это набор объектов, которые хранятся в виде таблицы. У каждой матрицы есть имя, единый тип всех ее объектов.

Обявление матрицы в Си

Также как и переменные матрицу в Си необходимо объявить перед тем как с ней работать, необходимо указать ее тип, ее имя , количество строк -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 и заполняет ее случайными числами в диапазоне, который укажет пользователь и выводит ее на экран.

int a[9][9]; // объявление матрицы 10 на 10

int i,j; // счетчики циклов

int range;// диапазон в котором присваиваются значения элементов матрицы

//ввод диапазона случайных чисел

printf("введите диапазон заполнения\n");

// пробегаем по всем строкам

// пробегаем по всем столбцам для данной строки i

a[i][j]=rand() % range+1; // прсиваиваем элементу матрицы a с номером строки i и номер столбца j случайного значения в диапазоне от 0 до 9

// пробегаем по всем строкам

// пробегаем по всем столбцам для данной строки i

// переход на следующую строку

При выводе матрицы на экран в Си для каждой строки мы совершаем переход на следующую строку с помощью оператора printf(" ");

Ввод матрицы в Си с помощью клавиатуры

Пример программы 23. Задаётся матрица размера 3 на 3 с помощью клавиатуры и ищется ее максимальный элемент. Он выводится на экран. При поиске максимального элемента, мы создаем специальную переменную max и присваиваем ей значение элемента a[0][0]. Пробегаем по всем элементам матрицы с помощью вложенного цикла, сравнивая текущий элемент с максимумом, если текущий элемент больше максимума, то максимуму присваивается значение этого элемента.

int a[2][2]; // объявление матрицы 3 на 3

int i,j; // счетчики циклов

int max; // переменная для хранения максимального элемента матрицы

// пробегаем по всем строкам

// пробегаем по всем столбцам для данной строки i

// ввод текущего элемента матрицы с клавиатуры

printf("Введите элемент матрицы [%d][%d]", i, j);

// переход на следующую строку

// пробегаем по всем строкам

// пробегаем по всем столбцам для данной строки i

// переход на следующую строку

// пробегаем по всем строкам

// пробегаем по всем столбцам для данной строки i

// сравниваем текущий элемент массива с максимумом

// вывод максимального элемента

printf ("Максимальный элемент массива %d", max);

Вернуться к содержанию Перейти к теме Работа с файлами в Си

Полезно почитать по теме массивы и матрицы в си
Массивы в си
Игра на си Крестики Нолики

С какого элемента считаются матрицы c

Вернуться к содержанию Перейти к теме Работа с файлами в Си

Ввод элементов матрицы

1 & 0 & 0 & X\cr 0 & 1 & 0 & Y\cr 0 & 0 & 1 & Z\cr 0 & 0 & 0 & 1\cr \end

0 & 1 & 2 & 3\cr 4 & 5 & 6 & 7\cr 8 & 9 & 10 & 11\cr 12 & 13 & 14 & 15\cr \end

0 & 4 & 8 & 12\cr 1 & 5 & 9 & 13\cr 2 & 6 & 10 & 14\cr 3 & 7 & 11 & 15\cr \end

00 & 10 & 20 & 30\cr 01 & 11 & 21 & 31\cr 02 & 12 & 22 & 32\cr 03 & 13 & 23 & 33\cr \end

С какого элемента считаются матрицы c

Матрица — это некоторая прямоугольная область (таблица), состоящая из строк и столбцов. Пересечения строк и столбцов образуют ячейки. Изобразим на рисунке прямоугольную матрицу a ( n × m ), состоящую из n строк и m столбцов:

Пусть n =3 и m =4. Строки и столбцы пронумеруем, начиная с 0. Заведём вспомогательные переменные:

i — текущее значение строки;

j — текущее значение столбца.

Прежде чем начать работу с матрицей, необходимо дать её описание. Но не всё так просто. У матрицы два измерения, а в языках С/С++ имеются только одномерные массивы и нет двумерных, трёхмерных и т.д. массивов, т.е. нет многомерных массивов, а есть только одномерные. Как же тогда работать с матрицами? Решение элементарное. Считаем матрицу одномерным массивом, состоящим из n строк, где каждая строка — это тоже массив, но из m элементов, т.е. рассматриваем матрицу как массив массивов. Формально это можно записать таким образом:

Тип_элементов Имя_матрицы [ число_строк ][ число_столбцов ];

Для нашей матрицы a описание будет выглядеть так (пусть элементы матрицы — действительные числа):

const int n = 3; // число строк

const int m = 4; // число столбцов

double a[n][m]; // выделяем память под матрицу

И теперь можно приступать к работе с матрицей. Например, присвоить значение какому-нибудь элементу матрицы:

Так мы присвоили значение элементу, расположенному в первой строке и во втором столбце (именно он отмечен на рисунке).

Индексы для матриц задаются так же, как и для одномерных массивов. И так же нежелательно выходить за пределы матрицы (по строкам или по столбцам — всё равно).

Разберём на простом примере некоторые приёмы работы с матрицами.

Пример . Дана прямоугольная матрица действительных чисел размером n × m . Пронормировать эту матрицу, т.е. поделить значение всех элементов матрицы на максимальный по модулю элемент.

Лекция 6. ОБРАБОТКА МАТРИЦ В С++

В С++ определены и двумерные массивы (матрицы), например матрица A, состоящая из 4 строк и 5 столбцов..

Двумерный массив (матрицу) можно объявить так:

тип имя_переменной [n][m];

где n – количество строк в матрице(строки нумеруются от 0 до n-1 ), m – количество столбцов (столбцы нумеруются от 0 до m-1 ).

Описана матрица x , состоящая из 10 строк и 15 столбцов (строки

нумеруются от 0 до 9, столбцы от 0 до 14).

Для обращения к элементу матрицы необходимо указать ее имя, и в квадратных скобках номер строки, а затем в квадратных скобках – номер столбца. Например, x[2][4] – элемент матрицы x , находящийся в третьей строке и

В С++ можно описать многомерные массивы, которые можно объявить с

помощью оператора следующей структуры:

тип имя_переменной [n1][n2]…[nk];

6.1. Блок-схемы основных алгоритмов обработки матриц

Блок-схема ввода матрицы представлена на рис. 6.1

Рис 6.1. Ввод матрицы

C использованием функций printf и scanf ввод матрицы можно

реализовать следующим образом.

printf(«N=»); scanf(«%d»,&N); printf(«M=»); scanf(«%d»,&M); printf(«\n Vvedite A \n»); for(i=0;i<N;i++)

C использованием cin и cout ввод матрицы можно реализовать следующим

Блок-схема вывода матрицы представлена на рис. 6.2

Рис 6.2. Вывод матрицы

C использованием функций printf и scanf построчный вывод матрицы

можно реализовать следующим образом. printf(«\n Matrica A\n»);

C использованием cin и cout построчный вывод матрицы можно реализовать

следующим образом. cout<<«\n Matrica A\n»;

На рис. 6.3 представлена программа ввода-вывода матрицы т результаты ее работы.

Рис 6.3. Результаты работы программы ввода матрицы и ее вывода

Вначале в качестве максимального элемента запоминается первый элемент матрицы A[0][0], номер строки imaх=0, jmax=0. Затем организуется цикл прохода по матрице, где каждый элемент сравнивается со значением max, и если

оказывается больше, то его значение запоминается как новое значение max, и

также запоминаются его индексы. Блок-схема алгоритма представлена на рис. 6.4.

Рис 6.4. Поиск максимального элемента матрицы и его индексов

Программа поиска максимального элемента и его номера представлена

int i,j,n,m, imax, jmax; float max;

max=a[0][0]; imax=0; jmax=0; for(i=0;i<n;i++)

Перед рассмотрением других алгоритмов, давайте вспомним некоторые свойства матриц (см. рис. 6.5):

● если номер строки элемента совпадает с номером столбца ( i = j ), это означает что элемент лежит на главной диагонали матрицы;

● если номер строки превышает номер столбца ( i > j ), то элемент находится ниже главной диагонали;

● если номер столбца больше номера строки ( i < j ), то элемент находится выше главной диагонали.

● элемент лежит на побочной диагонали квадратной матрицы , если его

индексы удовлетворяют равенству i + j + 1 = n;

● неравенство i + j + 1 < n характерно для элемента находящегося выше побочной диагонали квадратной матрицы ;

● соответственно, элементу квадратной матрицы , лежащему ниже

побочной диагонали соответствует выражение i + j + 1 > n.

Рис 6.5. Соотношение индексов у квадратной матрицы Вспомним из курса высшей математики некоторые типы квадратных матриц:

● матрица называется единичной , если все элементы нули, а на главной диагонали единицы;

● матрица называется диагональной , если все элементы нули, кроме

● матрица нулевая , если все элементы нули;

● матрица называется верхнетреугольной , если все элементы ниже

главной диагонали нули; ● матрица называется нижнетреугольной , если все элементы выше

главной диагонали нули;

● матрица называется симметричной , если A = A T .

Для проверки, что матрица В является обратной матрице А, нужно проверить условие А × В=Е (Е – единичная матрица).

Дальнейшие алгоритмы работы с матрицами рассмотрим на примерах решения задач.

ЗАДАЧА 6.1. Найти сумму элементов матрицы, лежащих выше главной диагонали.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *