Нужно немного доработать программу - C (СИ)
Формулировка задачи:
Задание:Вложение 792337
тут не уверен что правильно написал:Вложение 792338
и в самой функции постоянно пишет что new_N пустое:Вложение 792339
#include <stdio.h> #include <malloc.h> #include <stdlib.h> int** func(int **, int *, int *, int **, int, int); int main() { int **a; // указатель на указатель на строку int **a1 = NULL; int i, j, n, m; int *nn=0, *nm=0; system("chcp 1251"); system("cls"); printf("Введите количество строк: "); scanf("%d", &n); printf("Введите количество столбцов: "); scanf("%d", &m); // Выделение памяти под указатели на строки a = (int**)malloc(n * sizeof(int*)); // Ввод элементов массива for (i = 0; i<n; i++) // цикл по строкам { // Выделение памяти под хранение строк a[i] = (int*)malloc(m * sizeof(int)); for (j = 0; j<m; j++) // цикл по столбцам { printf("a[%d][%d] = ", i, j); scanf("%d", &a[i][j]); } } // Вывод элементов массива for (i = 0; i<n; i++) // цикл по строкам { for (j = 0; j<m; j++) // цикл по столбцам { printf("%5d ", a[i][j]); // 5 знакомест под элемент массива } printf("\n"); } int **c = func(a1, nn, nm, a, n, m); //for (int i = 0; i < *nn; i++); //free(*(a1 + i)); //free(a1); if (c) printf("poluchena novaya matrica: %d*%d \n", nn,nm); for (int i = 0; i < n; i++); for (int j = 0; j < m; j++); printf("%d", c[*nn][*nm] ); printf("\n"); free(c); free(a); getchar(); getchar(); return 0; } int** func(int ** new_matrix, int *new_N, int *new_M, int**matrix, int N, int M) { int ** new_martix = NULL; int i = 0; new_matrix = (int**)malloc(N * sizeof(int)); for (int i = 0; i < N; i++); { new_matrix[i] = (int*)malloc(M * sizeof(int)); if (i % 2 == 0) { for (int j = 0; j < M; j++) { if (matrix[i][j] % 5 == 0) { new_martix[*new_N][*new_M] = matrix[i][j]; new_M++; } } if (new_N > 0 && new_M > 0) { new_N++; new_M = 0; } } }return new_matrix; }
Решение задачи: «Нужно немного доработать программу»
textual
Листинг программы
int nn, nm; // без звезд!!! .... int **c = func(&nn, &nm, a, n, m);
Объяснение кода листинга программы
- В коде объявлены две переменные типа int -
nn
иnm
. - Затем происходит вызов функции
func
, которая возвращает двумерный массив указателей на int (c
). - В качестве аргументов функции
func
выступаютnn
,nm
,a
,n
иm
. - Значения переменных
nn
иnm
передаются в функциюfunc
по адресам (указателям). - Переменные
a
,n
иm
также передаются в функциюfunc
по адресам (указателям). - Результатом работы функции
func
является двумерный массив указателей на int (c
).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д