Проверка разреженной матрицы

CBeginner
Практиковаться сейчас

Введение

Разреженная матрица - это матрица, в которой количество 0 превышает количество ненулевых элементов. В этом пошаговом практическом занятии мы научимся проверять, является ли двумерный массив разреженной матрицей или нет, используя язык программирования C.

Примечание: вам нужно самостоятельно создать файл ~/project/main.c, чтобы практиковаться в написании кода и узнать, как компилировать и запускать его с использованием gcc.

cd ~/project
## создать main.c
touch main.c
## скомпилировать main.c
gcc main.c -o main
## запустить main
./main

Создание двумерного массива

В этом шаге мы создадим двумерный массив для хранения элементов нашей матрицы. Мы запросим у пользователя количество строк и столбцов, а затем будем просить пользователя вводить элементы матрицы по одному с использованием вложенного цикла for.

#include <stdio.h>

int main()
{
   int matrix[10][10], row, column, i, j;
   printf("Введите количество строк и столбцов матрицы:\n");
   scanf("%d%d", &row, &column);

   printf("Введите элементы матрицы:\n");
   for (i = 0; i < row; i++)
   {
      for (j = 0; j < column; j++)
      {
         scanf("%d", &matrix[i][j]);
      }
   }

   // Проверка, является ли матрица разреженной или нет
    int counter = 0;
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < column; j++)
        {
            if (matrix[i][j] == 0)
                counter++;
        }
    }

    if(counter > (row * column) / 2)
        printf("Матрица является разреженной матрицей\n");
    else
        printf("Матрица не является разреженной матрицей\n");

   return 0;
}

Распечатать матрицу

Здесь мы распечатаем матрицу с использованием вложенного цикла for, в котором мы уже получили ввод от пользователя.

#include <stdio.h>

int main()
{
   int matrix[10][10], row, column, i, j;
   printf("Введите количество строк и столбцов матрицы:\n");
   scanf("%d%d", &row, &column);

   printf("Введите элементы матрицы:\n");
   for (i = 0; i < row; i++)
   {
      for (j = 0; j < column; j++)
      {
         scanf("%d", &matrix[i][j]);
      }
   }

   // Распечатка матрицы
   printf("Матрица:\n");
   for (i = 0; i < row; i++)
   {
      for (j = 0; j < column; j++)
      {
         printf("%d ", matrix[i][j]);
      }
      printf("\n");
   }

   // Проверка, является ли матрица разреженной или нет
    int counter = 0;
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < column; j++)
        {
            if (matrix[i][j] == 0)
                counter++;
        }
    }

    if(counter > (row * column) / 2)
        printf("Матрица является разреженной матрицей\n");
    else
        printf("Матрица не является разреженной матрицей\n");

   return 0;
}

Завершить программу

Здесь мы добавим последние штрихи к нашей программе. Мы проверим, является ли матрица, предоставленная пользователем, разреженной матрицей или нет. Затем мы выведем результат, является ли она разреженной матрицей или нет.

#include <stdio.h>

int main()
{
   int matrix[10][10], row, column, i, j;
   printf("Введите количество строк и столбцов матрицы:\n");
   scanf("%d%d", &row, &column);

   printf("Введите элементы матрицы:\n");
   for (i = 0; i < row; i++)
   {
      for (j = 0; j < column; j++)
      {
         scanf("%d", &matrix[i][j]);
      }
   }

   // Распечатка матрицы
   printf("Матрица:\n");
   for (i = 0; i < row; i++)
   {
      for (j = 0; j < column; j++)
      {
         printf("%d ", matrix[i][j]);
      }
      printf("\n");
   }

   // Проверка, является ли матрица разреженной или нет
    int counter = 0;
    for (i = 0; i < row; i++)
    {
        for (j = 0; j < column; j++)
        {
            if (matrix[i][j] == 0)
                counter++;
        }
    }

    if(counter > (row * column) / 2)
        printf("Матрица является разреженной матрицей\n");
    else
        printf("Матрица не является разреженной матрицей\n");

   return 0;
}

Резюме

В этом пошаговом практическом занятии мы научились проверять, является ли двумерный массив разреженным или нет. Мы изучили концепцию разреженной матрицы и как писать код на языке программирования C для определения, является ли матрица разреженной или нет. Мы создали двумерный массив, получили ввод от пользователя, распечатали матрицу и, наконец, написали логику для проверки, является ли предоставленная матрица разреженной или нет.