Удалить k строку и n столбец из двумерного массива с использованием указателей - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужно удалить k строку и n столбец из двумерного массива с использованием указателей. Перечитал кучу всего, в том числе и на данном форуме, но до меня до сих пор не доходит( С использованием массива сделал, а вот с использованием указателей что то не получается.
Листинг программы
  1. #include <time.h>
  2. #include <stdio.h>
  3. #define N 5
  4. #define M 5
  5. int output (int a [N][M]);
  6. int input (int a [N][M]);
  7. int ydalen(int a[N][M]);
  8. int main()
  9. {
  10. int a[N][M];
  11. printf("vvedite massiv\n");
  12. input(a);
  13. printf("massiv:\n");
  14. output(a);
  15. printf("\n");
  16. printf("\n");
  17. printf("ydalenie\n");
  18. printf("\n");
  19. ydalen(a);
  20. }
  21. int input (int a[N][M])
  22. {srand(time(0));
  23. for(int i=1;i<N+1;i++)
  24. for(int j=1;j<M+1;j++)
  25. scanf("%d",&a[i][j]);
  26. printf("\n");
  27. }
  28. int output (int a[N][M])
  29. {
  30. for(int i=1;i<N+1;i++)
  31. {
  32. for(int j=1;j<M+1;j++)
  33. printf("%d ",a[i][j]);
  34. printf("\n");
  35. }
  36. }
  37. int ydalen(int a[N][M])
  38. { int k,n,i,j;
  39. printf("vvedite nomer stroki: ");
  40. scanf("%d",&k);
  41. printf("\n");
  42. printf("vvedite nomer stolbca: ");
  43. scanf("%d",&n);
  44. for(i = 1; i < N+1; i++){
  45. for(j = n; j < M ; j++){
  46. a[i][j] = a[i][j+1];
  47. }
  48. }
  49. for(i = k; i < N ; i++){
  50. for(j = 1; j < M; j++){
  51. a[i][j] = a[i+1][j];
  52. }
  53. }
  54. for (i=1; i<N; i++){
  55. for (j=1; j<M; j++){
  56. printf("%d ",a[i][j]);
  57. }
  58. printf("\n");
  59. }
  60. return a[N][M];
  61. }

Решение задачи: «Удалить k строку и n столбец из двумерного массива с использованием указателей»

textual
Листинг программы
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #define N 5
  5. #define M 5
  6.  
  7. void output (int n, int m,int **a) {
  8.  for (int i=0; i<n; i++) {
  9.   printf ("\n");
  10.   for (int j=0; j<m; j++) printf ("%d ",*(*(a+i)+j));
  11.  }
  12. }
  13.  
  14. int main () {
  15.  const int n=N,m=M;
  16.  int **a = (int **)malloc(n*sizeof(int *));
  17.  int i,j;
  18.  for (i=0; i<n; i++) {
  19.   a[i] = (int *)malloc(m*sizeof(int));
  20.  }
  21.  for (i=0; i<n; i++) for (j=0; j<m; j++) a[i][j]=i+j;
  22.  output (n,m,a);
  23.  getchar ();
  24.  return 0;
  25. }

Объяснение кода листинга программы

В этом коде определён массив размером 5x5, заполненный значениями i+j. В функции output происходит вывод массива на экран. В функции main создаётся массив, заполняется, выводится на экран, а затем программа завершается.

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


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

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

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы