|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.12.2018, 17:16 | #1 |
Новичок
Джуниор
Регистрация: 23.12.2018
Сообщений: 1
|
Переставление блоков матрицы по часовой стрелке
Необходимо исправить ошибки в коде (Си)
Задача: Дана матрица {aij}, i =1...2m, j = 1...2n. Она разбита на 4 неперекрывающихся блока размером m*n. Перестроить матрицу, переставляя блоки по часовой стрелке с сохранением порядка следования элементов. Вспомогательный массив не использовать. #include <stdio.h> #include <coniow.h> #define SIZE 40 #define ESC 27 int main(){ short i,j, m,n; //Размеры матрицы float matr[SIZE][SIZE]; //Исходная матрица bool fl; //true-неправильный ввод void matr2(short, //Размеры float[SIZE][SIZE]); //Матрица do{ fl=true; while(fl){ clrscr(); printf("Размеры матрицы:"); scanf("%hd%hd",&m,&n); if(m<1||m>SIZE||n<1||n>SIZE){ printf("Размер матрицы должен быть в диапазоне [%d:%d]\n",SIZE,SIZE); getch(); }else fl=false; if(m%2!=0&&n%2!=0){ printf("Размеры матрицы должны быть чётными"); getch(); }else fl=false; } printf("Исходная матрица\n"); for(i=0;i<m;i++){ for(j=0;j<n;j++){ scanf("%f",&matr[i][j]); } } printf("\nПерестроенная матрица\n"); for(i=0; i<m; i++){ for(j=0; j<n; j++){ printf("%11.4g",matr[i][j]); if((j+1)%7==0)printf("\n"); } if(m%7!=0)printf("\n"); } printf("\nВыход - Esc, продолжение - любая клавиша\n"); }while(getch()!=ESC); } #define SIZE 40 //Перестановка блоков по часовой стрелке void matr2(short m, short n, //Размеры матрицы float a[SIZE][SIZE]){ //Исходная матрица, она же результат short i,j; float buf; for(i=0;i<m;i++){ for(j=0;j<n;j++){ buf=a[i][j];a[i][j]=a[i+m/2][j];a[i][n/2]=buf;a[m/2][n/2]=a[i][j+n/2];a[m/2][n]=a[m/2][n/2]; } } } |
25.12.2018, 17:17 | #2 |
Форумчанин
Регистрация: 31.05.2009
Сообщений: 786
|
|
25.12.2018, 17:47 | #3 |
Заблокирован
Регистрация: 25.12.2018
Сообщений: 0
|
|
26.12.2018, 00:30 | #4 |
Регистрация: 08.06.2011
Сообщений: 4
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Дана матрица nxm. Отсортировать по возрастанию элементы стоящие по периметру матрицы, начиная с элемента A(n,1) по часовой стрелке | Pr* | Паскаль, Turbo Pascal, PascalABC.NET | 0 | 17.06.2015 11:55 |
Сортировать точки по часовой стрелке | DarkHacker | Общие вопросы Delphi | 2 | 24.01.2015 15:35 |
Поворот матрицы по/против часовой стрелке | Murashov | Общие вопросы C/C++ | 2 | 05.12.2012 19:57 |
повернуть квадратную матрицу на 90 градусов по часовой стрелке | brans | Общие вопросы по Java, Java SE, Kotlin | 1 | 18.02.2011 19:42 |
Как перевернуть изображение по часовой стрелке | John_chek | Мультимедиа в Delphi | 7 | 09.07.2007 00:24 |