Матрицы в Си

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("введите диапазон заполнения\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  ", a[i][j]);

}

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

printf("\n");

}

getch();

}

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

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

Пример программы 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 ("массив ");

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

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

}

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

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

Поделиться:

 

 

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

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