Из строк матрицы, в которых содержатся только четные числа, сформировать столбцы результирующего массива - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Не могу понять как сделать часть задания. Вот само задание: Ввести построчно элементы двумерного массива чисел заданных размеров. Количество вводимых в каждой строке чисел произвольное, но не больше заданного ранее размера. Если пользователь в строке вводит отрицательное число, то последние элементы в строке до заданного количества должны быть автоматически сформированы равными нулю. Из строк исходного массива,

в которых содержаться только четные числа

, сформировать столбцы результирующего массива. Вывести построчно сформированный массив. Не могу сделать выделенную часть. Вот то что есть:
#include <stdio.h>

int main()
{
    int a[50][50],i,j,n,m,p,t;
    int b[50][50];
    printf("\n Ввод размера двумерного массива \n");
    printf("Количество строк = ");
    scanf("%d", &n);
    printf("\n Количество столбцов = ");
    scanf("%d", &m);
    for(i=0;i<n;i++,p=1)
        for(p=1,j=0;j<m;j++)
        {
 
            if(p==0)
            a[i][j]=0;
            else
            scanf("%d", &a[i][j]);
            if(a[i][j]<0)
                p=0;
        }

    printf("\n Введенный массив \n");
 
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%4d", a[i][j]);
        }
    printf("\n");
    }

    for(i=0;i<m;i++)
    {
 
        for(j=0;j<n;j++)
        {
            b[i][j]=a[j][i];
        }
    printf("\n");
    }
 
    printf(" \n Результат \n");
 
    for(i=0;i<m;i++)
    
          for(j=0;j<n;j++)
        
                printf("%4d", b[i][j]);
    printf("\n");
    }
 
}

Решение задачи: «Из строк матрицы, в которых содержатся только четные числа, сформировать столбцы результирующего массива»

textual
Листинг программы
#include <stdio.h>
#include <malloc.h>
 
int check(int *s[], int m)
{
    int i,k,res;
    k=0;
    for(i=0;i<m;i++)
    {
        if (*s[i] % 2 == 0)
        k++;
    }
 
    if(k==m)
        res=1;
 
    else
 
        res=0;
 
    return res;
 
}
 
 
int main()
{
    int **a,i,j,n,m,p,t,k;
    int **b;
    int **c;
 
    printf("\n Ввод размера двумерного массива \n");
    printf("Количество строк = ");
    scanf("%d", &n);
    printf("\n Количество столбцов = ");
    scanf("%d", &m);
 
    a=(int**)malloc(n*sizeof(int*));
    b=(int**)malloc(n*sizeof(int*));
    c=(int**)malloc(n*sizeof(int*));
    for(i=0;i<n;i++)
    {
        *(a+i)=(int*)malloc(m*sizeof(int));
        *(b+i)=(int*)malloc(m*sizeof(int));
        *(c+i)=(int*)malloc(m*sizeof(int));
    }
 
 
 
    for(i=0;i<n;i++,p=1)
        for(p=1,j=0;j<m;j++)
        {
 
            if(p==0)
            a[i][j]=0;
            else
            scanf("%d", &a[i][j]);
            if(a[i][j]<0)
                p=0;
        }
 
 
 
    printf("\n Введенный массив \n");
 
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%4d", a[i][j]);
        }
    printf("\n");
    }
 
    for(i=0;i<n;i++)
        for(j=0;j<m;j++)
        {
            t=check(**a[i], m);
            if(t==1)
            b[i][j]=a[i][j];
            else
                j++;
 
 
        }
 
    for(i=0;i<m;i++)
    {
 
        for(j=0;j<n;j++)
        {
            c[i][j]=b[j][i];
        }
    printf("\n");
    }
 
 
    printf(" \n Результат \n");
 
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
        printf("%4d", c[i][j]);
        }
    printf("\n");
    }
 
free(a);
free(b);
free(c);
 
}

Объяснение кода листинга программы

В этом коде реализована функция проверки, которая принимает двумерный массив и количество строк в качестве входных данных и возвращает 1, если все числа в строке четные, и 0 в противном случае. Также в коде реализована функция main, которая запрашивает у пользователя размер двумерного массива, заполняет его числами, проверяет, являются ли все числа в каждой строке четными, и выводит результирующий массив. Код использует динамическое выделение памяти для хранения массива.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.571 из 5
Похожие ответы