Консультация № 188515
23.12.2015, 14:26
0.00 руб.
0 1 1
Здравствуйте, уважаемые эксперты! Прошу вас о помощи..
Моя задача такова:


Дана квадратная матрица A порядка M. Повернуть ее на угол 90º в положи-тельном направлении, то есть против часовой стрелки (при этом элемент A11 перейдет в AM1, элемент AM1 — в AMM и т. д.). Вспомогательную матрицу не использовать.

Помогите, пожалуйста, транспонировать матрицу. Увы, но я не понимаю, как это сделать..

Приложение:
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <time.h>

int main()
{
srand(time(NULL));

SetConsoleCP(1251);
SetConsoleOutputCP(1251);

int m, l, n;
printf("Введите размер квадратной матрицы m:");
scanf("%d", &m);

n=m;
l=m;

int i, j, arr[m][m];
printf("Исходная матрица:\n");

for(i=0; i<m; i++)
{
for(j=0; j<m; j++)
{
arr[i][j]=rand()%10;
printf("%3d", arr[i][j]);
}
printf("\n");
}

Обсуждение

давно
Посетитель
7438
7205
23.12.2015, 15:23
общий
это ответ
Здравствуйте, Klaus!
Вот сам переворот.
Код:

int temp;
for(i=0; i<m; i++)
{
for(j=i; j<m-i-1; j++)
{
temp = A[i][j];
A[i][j] = A[j][m-i-1];
A[j][m-i-1] = A[m-i-1][m-j-1];
A[m-i-1][m-j-1] = A[m-j-1][i];
A[m-j-1][i] = temp;
}
}
5
Об авторе:
"Если вы заметили, что вы на стороне большинства, —
это верный признак того, что пора меняться." Марк Твен
Форма ответа