Функция поворота двумерного массива на 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;
}
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы для работы с потоками ввода-вывода и манипуляциями с выводом.
- Создается двумерный массив типа double с именем mas, размерность которого определяется в процессе выполнения программы.
- Используется директива #pragma для компиляции кода, который будет выполняться на компьютере без изменений.
- Задаются размеры массива в виде констант типа int с именами ROW и COLUMN.
- Создаются две переменные типа int с именами i и j, которые будут использоваться в двух вложенных циклах.
- Внешний цикл for выполняется столько раз, сколько строк в массиве.
- Внутренний цикл for выполняется столько раз, сколько столбцов в массиве.
- С помощью функции cout и манипулятора setw выводится элемент массива с индексами (ROW-i-1)(COLUMN-j-1) в формате с фиксированной шириной поля вывода.
- В конце каждой итерации внутреннего цикла выводится символ новой строки '\n'.
- В конце каждой итерации внешнего цикла выводится символ новой строки '\n'.