Удалить 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 создаётся массив, заполняется, выводится на экран, а затем программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5
Похожие ответы