Как с помощью указателей заменить две конкретные строчки в двумерном динамическом массиве? - C (СИ)

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

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

подскажите пожалуйста как с помощью указателей заменить две конкретные строчки в двумерном динамическом массиве? если можно с кодом заранее спасибо

Решение задачи: «Как с помощью указателей заменить две конкретные строчки в двумерном динамическом массиве?»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define M 4
#define N 5
 
/*  переставить две любые строки    */
void swapRows(int *R1, int *R2)
{   int temp;
    for(int j=0;j<N;j++)
    {   temp = R1[j];
        R1[j] = R2[j];
        R2[j] = temp;
    }
}
 
int main()
{   int i, j;
    srand((unsigned int) time(NULL));
    
    int **A = (int**) malloc(M * sizeof(int*));
    for(i = 0; i<M;i++)
        A[i] = (int*) malloc(N*sizeof(int));
 
    printf("Initial array:\n");
    for (i=0;i<M;i++)
    {    for(j=0;j<N;j++)
        {   A[i][j] = rand()%10-5;
            printf("%4d", A[i][j]);
        }
        printf("\n");
    }
 
    /*  переставляем строки 1 и 3   */
    swapRows(A[1], A[3]);   
 
    printf("\n\nAfter swap:\n");
    for (i=0;i<M;i++)
    {   for(j=0;j<N;j++)
            printf("%4d", A[i][j]);
        printf("\n");
    }
 
    fflush(stdin);
    getchar();
    return 0;
}

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

  1. В функции swapRows происходит перестановка двух строк в двумерном массиве. Функция принимает два указателя на начало строк, которые нужно поменять местами.
  2. Внутри функции объявлен временный целочисленный переменный temp, который будет использоваться для хранения значений, которые считываются из массива.
  3. Затем в цикле for проходятся по всем элементам первой строки (которую нужно поменять) и копируются в temp.
  4. После этого, в том же цикле, значения из temp записываются в массив второй строки, а значения из второй строки записываются в temp.
  5. В конце цикла, значения из temp записываются обратно в первую строку.
  6. В функции main происходит инициализация двумерного массива динамическим выделением памяти.
  7. Затем массив выводится на экран.
  8. После этого, вызывается функция swapRows, которая меняет местами вторую и третью строки массива.
  9. После вызова функции swapRows, массив выводится на экран еще раз.
  10. В конце программы добавлен вызов fflush(stdin), чтобы сгладить возможные проблемы с буфером ввода.
  11. И вызов getchar(), чтобы программа ждала нажатия любой клавиши перед завершением.
  12. Программа возвращает 0, что означает успешное завершение работы.

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


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

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

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