Как выписать алгоритм ввода и алгоритм вывода данных в массиве в отдельные функции на Си?

Удалить из матрицы А (6х9) все строки, содержащие единицы, передвинув на их место оставшиеся строки без нарушения порядка их следования.

По заданию программа удаляет строки в массиве, но надо выписать ввод и вывод данных в отдельные функции. Не совсем понимаю как это делать

Тест:
2 0 0 0 0 0 0 0 0
3 0 1 0 0 0 1 0 0
4 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0
7 0 1 0 0 0 0 0 0

Вывод:
2 0 0 0 0 0 0 0 0
4 0 0 0 0 0 0 0 0
5 0 0 0 0 0 0 0 0
6 0 0 0 0 0 0 0 0

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int **A,  t, ca;
    ca = 0;

    
    printf("Enter elements of the array A[6][9]\n");
    A = malloc(6 * sizeof(int *));
    for (int i = 0; i < 6; i++)
        {A[i] = (int*)malloc(9 * sizeof(int));
        for (int l = 0; l < 9; l++)
            scanf("%d", &A[i][l]);}
    printf("\n");



    for (int i = 0; i < 6; i++)
    {
        t = 0;
        for (int l = 0; l < 9; l++)
            if(A[i][l] == 1)
                t++;
        if (t != 0)
        {
            for(int j = i; j<5; j++)
                for (int k = 0; k<9; k++)
                {
                    A[j][k] = A[j+1][k];
                }
                ca++;
        }
    }

    

    printf("\nArray A:\n");
    if (ca != 6)
    {
        for (int i = 0; i < (6-ca); i++)
        {
            for (int l = 0; l < 9; l++)
                printf("%d ", A[i][l]);
            printf("\n");
        }
    } else printf("All lines contain at least one \"1\"");
    
    
    printf("\n\n");
    return 0;
}

Ответы (1 шт):

Автор решения: vlad9i2

Как-то так.

const int N = 6, M = 9;


void scaner(int **A) {
    for (int i = 0; i < N; i++) {
      A[i] = (int*)malloc(M * sizeof(int));
      for (int l = 0; l < M; l++) {
        scanf("%d", &A[i][l]);
      }
    }
}

void printer(int **A, int ca) {
  printf("\nArray A:\n");
  if (ca != N) {
      for (int i = 0; i < (N-ca); i++) {
        for (int l = 0; l < M; l++) {
          printf("%d ", A[i][l]);
        }
        printf("\n");
      }
  } else {
    printf("All lines contain at least one \"1\"");
  }
  printf("\n\n");
}

int main()
{
    int **A,  t, ca;
    ca = 0;
    printf("Enter elements of the array A[6][9]\n");
    A = (int**)malloc(N * sizeof(int *));
    scaner(A);
    for (int i = 0; i < N - ca; i++) {
      t = 0;
      for (int l = 0; l < M; l++) {
        if(A[i][l] == 1) {
          t++;
        }
      }
      if (t != 0) {
        ca++;
        for(int j = i; j < 6 - ca; j++) {
          for (int k = 0; k < M; k++) {
              A[j][k] = A[j+1][k];
          }
        }
        i--;
      }
    }
    printer(A, ca);
    return 0;
}
→ Ссылка