Написать функцию, осуществляющую перемену местами столбцов вещественной матрицы - C (СИ)

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

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

Написать функцию SwapCol(A, M, N, K1, K2), осуществляющую перемену местами столбцов вещественной матрицы A размера M × N с номерами K1 и K2. Матрица A является входным и выходным параметром; если K1 или K2 больше N, то матрица не изменяется. Используя эту функцию, поменять для данной матрицы A размера M × N столбцы с данными номерами K1 и K2. Как понимаю нужно работать с указателями, а я до них пока не дошел, но срочно нужно ее сдать...

Решение задачи: «Написать функцию, осуществляющую перемену местами столбцов вещественной матрицы»

textual
Листинг программы
#include <stdio.h>
float *SwapCol(float  *A,int M,int N,int K1,int K2)
{
  if((K1 >N)||(K2>N))return A;
  int i;
  float k;
  --K1;--K2;
  for(i=0;i<M*N;i+=M)
  {
    k=*(A+i+K1);
    *(A+i+K1)=*(A+i+K2);
    *(A+i+K2)=k;
  }
  return A;
}
#define S 5
#define P 5
int main(void)
{
  float B[S][P]={{3,65,2.3,56.7,5},{2,4.5,890.9,7,1},{34,51,3.4,22.56,34},{9,8,6,5,4},{4,3,7,89.0,7}};
  int i,j;
 
  for(i=0;i<S;i++)//Печатаем исходный массив
   {
      printf("\n");
      for(j=0;j<P;j++)
      printf("%-6.2f ",B[i][j]);
   }
  printf("\n");
  SwapCol(*B,5,5,1,5);
  for(i=0;i<S;i++)//Печатаем преобразованный массив
   {
      printf("\n");
      for(j=0;j<P;j++)
      printf("%-6.2f ",B[i][j]);
   }
  return (0);
}

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

  1. В функции SwapCol осуществляется перемена местами столбцов вещественной матрицы. Функция принимает в качестве аргументов указатель на первый элемент матрицы, количество строк и столбцов матрицы, а также номера столбцов, между которыми необходимо поменять местами значения.
  2. Если хотя бы один из номеров столбцов больше количества столбцов в матрице, функция возвращает указатель на первый элемент матрицы, не осуществляя никаких изменений.
  3. Внутри функции создаются три переменные: i (для итерации по элементам матрицы), k (для хранения временного значения элемента) и две переменные K1 и K2 (для хранения номеров столбцов). Значения K1 и K2 уменьшаются на единицу, чтобы корректно работать с 0-индексированными массивами.
  4. Далее следует цикл, который проходит по всем элементам матрицы. В каждой итерации значение элемента с индексом i+K1 копируется во временную переменную k.
  5. Затем значения элементов с индексами i+K1 и i+K2 меняются местами, и временное значение k присваивается элементу с индексом i+K2.
  6. В конце функции возвращается указатель на первый элемент матрицы.
  7. В функции main создается массив B, заполненный некоторыми значениями.
  8. Далее следует цикл, который проходит по всем строкам матрицы и печатает значения элементов каждой строки через пробел.
  9. Затем вызывается функция SwapCol, которая меняет местами столбцы матрицы B с 1-го на 5-й и с 5-го на 1-й.
  10. После этого цикл проходит по всем строкам матрицы и печатает значения элементов каждой строки через пробел.
  11. В конце функции main возвращается 0, что означает успешное завершение работы программы.

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


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

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

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