Удалить 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 создаётся массив, заполняется, выводится на экран, а затем программа завершается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д