Написать функцию, осуществляющую перемену местами столбцов вещественной матрицы - 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);
- }
Объяснение кода листинга программы
- В функции SwapCol осуществляется перемена местами столбцов вещественной матрицы. Функция принимает в качестве аргументов указатель на первый элемент матрицы, количество строк и столбцов матрицы, а также номера столбцов, между которыми необходимо поменять местами значения.
- Если хотя бы один из номеров столбцов больше количества столбцов в матрице, функция возвращает указатель на первый элемент матрицы, не осуществляя никаких изменений.
- Внутри функции создаются три переменные: i (для итерации по элементам матрицы), k (для хранения временного значения элемента) и две переменные K1 и K2 (для хранения номеров столбцов). Значения K1 и K2 уменьшаются на единицу, чтобы корректно работать с 0-индексированными массивами.
- Далее следует цикл, который проходит по всем элементам матрицы. В каждой итерации значение элемента с индексом i+K1 копируется во временную переменную k.
- Затем значения элементов с индексами i+K1 и i+K2 меняются местами, и временное значение k присваивается элементу с индексом i+K2.
- В конце функции возвращается указатель на первый элемент матрицы.
- В функции main создается массив B, заполненный некоторыми значениями.
- Далее следует цикл, который проходит по всем строкам матрицы и печатает значения элементов каждой строки через пробел.
- Затем вызывается функция SwapCol, которая меняет местами столбцы матрицы B с 1-го на 5-й и с 5-го на 1-й.
- После этого цикл проходит по всем строкам матрицы и печатает значения элементов каждой строки через пробел.
- В конце функции main возвращается 0, что означает успешное завершение работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д