Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.12.2018, 17:16   #1
DeryabinaAlina
Новичок
Джуниор
 
Регистрация: 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];
}
}
}
DeryabinaAlina вне форума Ответить с цитированием
Старый 25.12.2018, 17:17   #2
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

DeryabinaAlina, обращайтесь e-mail: informatik101@mail.ru
Telegram: @alexcoder1
vk.com/alexcoder1
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 25.12.2018, 17:47   #3
KataDmitrovna
Заблокирован
 
Регистрация: 25.12.2018
Сообщений: 0
По умолчанию

здраствуйте
готова выполнить
Katadmitrivna@email.ua
KataDmitrovna вне форума Ответить с цитированием
Старый 26.12.2018, 00:30   #4
Thread
 
Аватар для Thread
 
Регистрация: 08.06.2011
Сообщений: 4
По умолчанию

Обращайтесь.

Контакты
cyber4401@gmail.com
http://vk.com/cyber4401
Thread вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дана матрица 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