Удалить k строку и n столбец из двумерного массива с использованием указателей - C (СИ)
Формулировка задачи:
Нужно удалить k строку и n столбец из двумерного массива с использованием указателей. Перечитал кучу всего, в том числе и на данном форуме, но до меня до сих пор не доходит( С использованием массива сделал, а вот с использованием указателей что то не получается.
#include <time.h>
#include <stdio.h>
#define N 5
#define M 5
int output (int a [N][M]);
int input (int a [N][M]);
int ydalen(int a[N][M]);
int main()
{
int a[N][M];
printf("vvedite massiv\n");
input(a);
printf("massiv:\n");
output(a);
printf("\n");
printf("\n");
printf("ydalenie\n");
printf("\n");
ydalen(a);
}
int input (int a[N][M])
{srand(time(0));
for(int i=1;i<N+1;i++)
for(int j=1;j<M+1;j++)
scanf("%d",&a[i][j]);
printf("\n");
}
int output (int a[N][M])
{
for(int i=1;i<N+1;i++)
{
for(int j=1;j<M+1;j++)
printf("%d ",a[i][j]);
printf("\n");
}
}
int ydalen(int a[N][M])
{ int k,n,i,j;
printf("vvedite nomer stroki: ");
scanf("%d",&k);
printf("\n");
printf("vvedite nomer stolbca: ");
scanf("%d",&n);
for(i = 1; i < N+1; i++){
for(j = n; j < M ; j++){
a[i][j] = a[i][j+1];
}
}
for(i = k; i < N ; i++){
for(j = 1; j < M; j++){
a[i][j] = a[i+1][j];
}
}
for (i=1; i<N; i++){
for (j=1; j<M; j++){
printf("%d ",a[i][j]);
}
printf("\n");
}
return a[N][M];
}Решение задачи: «Удалить k строку и n столбец из двумерного массива с использованием указателей»
textual
Листинг программы
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define N 5
#define M 5
void output (int n, int m,int **a) {
for (int i=0; i<n; i++) {
printf ("\n");
for (int j=0; j<m; j++) printf ("%d ",*(*(a+i)+j));
}
}
int main () {
const int n=N,m=M;
int **a = (int **)malloc(n*sizeof(int *));
int i,j;
for (i=0; i<n; i++) {
a[i] = (int *)malloc(m*sizeof(int));
}
for (i=0; i<n; i++) for (j=0; j<m; j++) a[i][j]=i+j;
output (n,m,a);
getchar ();
return 0;
}
Объяснение кода листинга программы
В этом коде определён массив размером 5x5, заполненный значениями i+j. В функции output происходит вывод массива на экран. В функции main создаётся массив, заполняется, выводится на экран, а затем программа завершается.