Как выписать алгоритм ввода и алгоритм вывода данных в массиве в отдельные функции на Си?
Удалить из матрицы А (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;
}