СИ | Удалить числа кратные k из динамической матрицы
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <locale.h>
int main() {
int n;
int m;
int k;
int helpa;
int genialnoereshenie[1000];
setlocale(LC_ALL, "");
printf("Размерность: \n");
scanf("%d %d", &n, &m); while (getchar() != '\n');
if ((n < 2) || (m < 2)) { puts("Неправильный ввод!"); return 0; }
int** matrix = (int**)calloc(n, sizeof(int*));
if (!matrix) { puts("Мало памяти!"); return 0; }
for (int i = 0; i < n; i++) {
matrix[i] = (int*)calloc(m, sizeof(int));
if (!matrix[i]) {
for (int j = 0; j < i; j++) {
free(matrix[i]);
free(matrix);
puts("Мало памяти!");
return 0;
}
}
}
int kilka = 0;
printf("k: ");
scanf("%d", &k);
while (getchar() != '\n');
for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) scanf("%d", &matrix[i][j]); while (getchar() != '\n');
printf("\n------------------------------ \n");
printf("1) Исходная: \n");
for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) printf("%d\t", matrix[i][j]); printf("\n"); }
printf("------------------------------ \n");
int** mass = (int**)calloc(n, sizeof(int*));
for (int i = 0; i < n; i++) {
mass[i] = (int*)calloc(m, sizeof(int));
if (!mass[i]) {
for (int j = 0; j < i; j++) {
free(matrix[i]);
free(matrix);
free(mass);
free(mass[i]);
puts("Мало памяти!");
return 0;
}
}
}
//
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
memcpy(&mass[i][j], &matrix[i][j], sizeof(int));
}
}
int c = 0;
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
if (mass[i][j] % k == 0) {
memcpy(&matrix[i][j], &c, sizeof(int)); // ВМЕСТО ЗАМЕНЫ НА 0 НУЖНО ПРОСТО УДАЛИТЬ ЭЛЛЕМЕНТ
}
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
printf("%d\t", matrix[i][j]);
}
printf("\n");
}
free(matrix);
free(mass);
}
Написал значительную часть кода, но как удалить элемент из динамической матрицы, а не заменить его на ноль - не знаю. Прошу помочь.