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