Повернуть матрицу на 90, 180 и 270 градусов - C (СИ)
Формулировка задачи:
Помогите пожалуйста в решение задания.
Дана матрица первый элемент которой а=5, каждый последующий элемент больше предыдущего на 5. Каждый нечётный элемент матрицы отрицательный (матрица 3х3)
Надо написать программу которая позволила бы повернуть матрицу на 90, 180 и 270 градусов.
не могли бы вы помочь в создание алгоритма, который какраз создаст эту матрицу.. :confused: :confused: :confused:
Решение задачи: «Повернуть матрицу на 90, 180 и 270 градусов»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #define N 3 void PrintMatrix(int *p) { int i, j; for(i = 0; i < N; ++i){ for(j = 0; j < N; ++j) printf("%4d", *(p + i * N + j)); printf("\n"); } } void InitMatrix0(int *p) { int i, j, a = 5, x = 0; for(i = 0; i < N; ++i){ for(j = 0; j < N; ++j){ *(p + i * N + j) = a; a += 5; if(x & 1) *(p + i * N + j) *= -1; ++x; } } } void InitMatrix90(int *p) { int i, j, a = 5, x = 0; for(j = N - 1; j >= 0; --j){ for(i = 0; i < N; ++i){ *(p + i * N + j) = a; a += 5; if(x & 1) *(p + i * N + j) *= -1; ++x; } } } void InitMatrix180(int *p) { int i, j, a = 5, x = 0; for(i = N - 1; i >= 0; --i){ for(j = N - 1; j >= 0; --j){ *(p + i * N + j) = a; a += 5; if(x & 1) *(p + i * N + j) *= -1; ++x; } } } void InitMatrix270(int *p) { int i, j, a = 5, x = 0; for(j = 0; j < N; ++j){ for(i = N - 1; i >= 0; --i){ *(p + i * N + j) = a; a += 5; if(x & 1) *(p + i * N + j) *= -1; ++x; } } } int main() { int A[N][N], *t; t = &A[0][0]; InitMatrix0(t); PrintMatrix(t); printf("\n\n"); InitMatrix90(t); PrintMatrix(t); printf("\n\n"); InitMatrix180(t); PrintMatrix(t); printf("\n\n"); InitMatrix270(t); PrintMatrix(t); printf("\n\n"); return 0; }