Создание динамических массивов из двумерного массива. С(Си)
Данные: tab2 - массив действительных чисел размерностью n строк, m столбцов. Напишите функции:
• f1 — создает массив tabD, содержащий положительные элементы,
• f2 — создает массив tabU, содержащий отрицательные элементы.
Напишите программу, в которой загружаются данные, вызываются функции и отображаются результаты.
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void main() {
int **tabD;
int **tabU;
int i, j;
int i2, j2;
int m, n;
printf("Podaj m & n:\n");
scanf("%d/%d", &m, &n);
tabD = (int**) malloc(sizeof(int*)*m);
tabU = (int**) malloc(sizeof(int*)*m);
for (i = 0; i < m; i++) {
tabD[i] = (int*) malloc(sizeof(int)*n);
}
for (i2 = 0; i2 < m; i2++) {
tabU[i2] = (int*) malloc(sizeof(int)*n);
}
for (i = 0; i < m; ++i) {
for (j = 0; j < n; ++j) {
tabD[i][j] = rand() % 1000;
printf("%d ", tabD[i][j]);
}
printf("\n");
}
for (i2 = 0; i2 < m; ++i2) {
for (j2 = 0; j2 < n; ++j2) {
tabU[i2][j2] = -(rand() % 1000);
printf("%d ", tabU[i2][j2]);
}
printf("\n");
}
free(tabD);
free(tabU);
}
Подскажите как правильно это сделать! А то мне кажется, что мое решение не является хорошим.
Источник: Stack Overflow на русском