Из строк матрицы, в которых содержатся только четные числа, сформировать столбцы результирующего массива - 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, которая запрашивает у пользователя размер двумерного массива, заполняет его числами, проверяет, являются ли все числа в каждой строке четными, и выводит результирующий массив. Код использует динамическое выделение памяти для хранения массива.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д