Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //=========================================По транспонированию матрицы======================================================
- Транспонирование матрицы - когда строки и столбцы меняются местами, например:
- исходный массив
- 13 16 27 25 // первая строка
- 23 25 16 12 // вторая строка
- 9 1 2 7
- результирующий массив
- 13 23 9 // первая строка стала первым столбцом
- 16 25 1 // вторая строка стала вторым столбцом
- 27 16 2 // и т.д.
- 25 12 7
- В функции транспонирования нужно обязательно создавать новый массив, так как количество строк и столбцов может меняться
- void tRans(int**& arr, int& lines, int& cols) { // все параметры должны приниматься по ссылкам так как будут меняться их значения
- int** temp = new int* [cols];
- for (int i = 0; i < cols; ++i) { // здесь вы правильно создали новый массив и правильно заменили количество его строк на количество столбцов исходного
- temp[i] = new int[lines];
- for (int j = 0; j < lines; j++) { // одновременно можно заполнить строки нового массива
- // подумайте сами как именно заполнять, если совсем никак, то в самом конце подсказка
- }
- }
- // далее не забываем удалить старый массив (включая вложенные массивы)
- arr = temp; // а в указатель на старый записать указатель на новый
- // ну и соответственно меняем значения lines и cols
- }
- int main() {
- int a = 3;
- int b = 4;
- int** pArr = new int*[a];
- for (int i = 0; i < a; i++) {
- pArr[i] = new int[b];
- }
- for (int i = 0; i < a; i++) {
- for (int j = 0; j < b; j++) {
- pArr[i][j] = rand() % 30;
- cout << setw(4) << pArr[i][j];
- }
- cout << endl;
- }
- cout << endl;
- tRans(pArr, a, b);
- for (int i = 0; i < a; i++) {
- for (int j = 0; j < b; j++) {
- cout << setw(4) << pArr[i][j]; // в main для наглядности выведите массив до и после
- }
- cout << endl;
- }
- cout << endl;
- for (int i = 0; i < a; i++) {
- delete[]pArr[i];
- }
- delete[]pArr;
- }
- //=========================================По повороту на 90 градусов======================================================
- Функция для поворота на 90 градусов полностью идентична описанной выше функции для транспонирования, отличие только в одной строке (как заполнять матрицу)
- //===================================Подсказка на крайний случай=============================
- temp[i][j] = arr[j][i]; // для транспонирования (разберитесь почему именно так)
- temp[i][j] = arr[lines - j - 1][i]; // для поворота (разберитесь почему именно так)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement