Повернуть матрицу на 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;
}

Оцени полезность:

7   голосов , оценка 4.571 из 5
Похожие ответы