Удаление строки из матрицы на СИ
необходимо удалить подходящие под условие строки из матрицы. У меня задумка просто заменить по очереди каждый элемент с шагом в длину строки и понизить верхнюю границу при выводе(картинка для наглядности)
Вот сама функция, которая должна это делать, при вызове консоль крашится. Где я ошибся?
void string_move(int* p, int row, int len_row)
{
for (int i = 0; i < row*len_row - len_row-1; i+ len_row)
{
*(p+i) = *(p+i+len_row);
*(p+i+1) = *(p+i+len_row+1);
}
return 0;
}
Полная программа вот:
#include <stdlib.h>
#include <sti.h>
#define X 4
#define Y 2
int string_sum(int*, int);
void string_move(int*, int,int);
void input_matrix(int**, int, int);
void output_matrix(int**, int, int);
int main()
{
int** a = (int**)calloc(X, sizeof(int*));
for (int i = 0; i < Y; i++)
a[i] = (int*)calloc(Y, sizeof(int));
input_matrix(a, X, Y);
output_matrix(a, X, Y);
for (int i = 0; i<X; i++)
if (string_sum(a[i], Y)%2==0)
string_move(a, X, Y);
return 0;
}
int string_sum(int* p, int len)
{
int sum=0;
for (int i = 0; i < len; i++)
sum += *(p+i);
return sum;
}
void string_move(int* p, int row, int len_row)
{
for (int i = 0; i < row*len_row - len_row-1; i+ len_row)
{
*(p+i) = *(p+i+len_row);
*(p+i+1) = *(p+i+len_row+1);
}
return 0;
}
void input_matrix(int** matrix, int n, int m)
{
for (int i=0; i<n; i++)
for (int j=0; j<m; j++)
{
printf("matrix[%d][%d] = ", i, j);
scanf( "%d", &matrix[i][j]);
}
}
void output_matrix(int** matrix, int n, int m)
{
printf("\nMatrix: \n");
for (int i = 0; i < n; i++)
{
for (int j = 0; j < m; j++)
printf("%d ",matrix[i][j]);
printf("\n");
}
}