Матрицы в Си

12 сентября 2018 - Администратор

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

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

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

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 ("массив ");

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

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

{

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

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

    {

         printf("%d  ", a[i][j]);

}

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

printf(" ");

}

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(" ");      

}

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

}

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

printf ("массив ");

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

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

{

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

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

    {

         printf("%d  ", a[i][j]);

}

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

printf(" ");

}

// поиск максимума

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();

}

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

Комментарии (0)

Нет комментариев. Ваш будет первым!