Функция поворота двумерного массива на 180 градусов, против часовой стрелки - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Пожалуйста напишите функцию поворота двумерного массива на 180 градусов, против часовой стрелки. Массив 5x5
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define ROW 5
#define COLUMN 5
 
void Display(int *mas, int r, int c)//display function
{
    int i, j;
    printf("Table of arrays:\n\n");
    for(i = 0; i < r; i++)
    {
    for (j = 0; j < c; j++)
    {
        printf("%d\t",*(mas+i*c+j));//arrays through the pointers
    }
        printf("\n");
    }
    }
    
    void Process(int mas[ROW][COLUMN])
    {
    int i,j;
    int work=0;
     for (i=0;i<ROW/2;i++)
   for (j=0;j<COLUMN;j++){
     
       work=mas[i][j];  mas[i][j] = mas[ROW-i+1][COLUMN-j+1];
        mas[ROW-i+1][COLUMN-j+1]=work;
 }

   if (ROW % 2==1){
     i= (ROW / 2)+1;
     for (j=0;j< (ROW / 2);j++){
       work=mas[i][j]; 
        mas[i][j] = mas[ROW-i+1][COLUMN-j+1]; 
       mas[ROW-i+1][COLUMN-j+1]=work;
                                }
            printf("\n%d",mas[i][j]);   }
 
    }
    int main() 
    {
    
    int mas[ROW][COLUMN];
    int i, j;
    printf("Programming language\nVariant 9\n\n");
    srand(time(NULL));//changing random numbers in each running of the programm
 
    for (i = 0; i < ROW; i++) //creating 2D array
    for (j = 0; j < COLUMN; j++)
    {
        mas[i][j]=rand()%160-80;//filling 2D array with random numbers
        
    }
    Display(*mas,ROW,COLUMN);
    
    Process(mas);
    system("pause");
    getch();
}
у меня выходит так но все равно неправильно! заранее спасибо за ответ

Решение задачи: «Функция поворота двумерного массива на 180 градусов, против часовой стрелки»

textual
Листинг программы
#include <iostream>
#include <iomanip>
using namespace std;
 
 
for (i = 0; i < ROW; i++)
{
    for (j = 0; j < COLUMN; j++)
    {
        cout<<setw(4)<<mas[ROW-i-1][COLUMN-j-1];
    }
    cout<<endl;
}

Объяснение кода листинга программы

  1. Включаются необходимые заголовочные файлы для работы с потоками ввода-вывода и манипуляциями с выводом.
  2. Создается двумерный массив типа double с именем mas, размерность которого определяется в процессе выполнения программы.
  3. Используется директива #pragma для компиляции кода, который будет выполняться на компьютере без изменений.
  4. Задаются размеры массива в виде констант типа int с именами ROW и COLUMN.
  5. Создаются две переменные типа int с именами i и j, которые будут использоваться в двух вложенных циклах.
  6. Внешний цикл for выполняется столько раз, сколько строк в массиве.
  7. Внутренний цикл for выполняется столько раз, сколько столбцов в массиве.
  8. С помощью функции cout и манипулятора setw выводится элемент массива с индексами (ROW-i-1)(COLUMN-j-1) в формате с фиксированной шириной поля вывода.
  9. В конце каждой итерации внутреннего цикла выводится символ новой строки '\n'.
  10. В конце каждой итерации внешнего цикла выводится символ новой строки '\n'.

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

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