Форум программистов, компьютерный форум CyberForum.ru

Переворот матрицы~изображения. - C++

Восстановить пароль Регистрация
 
J_Max
Заблокирован
22.02.2010, 12:32     Переворот матрицы~изображения. #1
Дана матрица HxW H – произвольное W – произвольное
Реализовать функцию разворота матрицы “вверх ногами” или проще для понимания переворот изображения,
Что это значит.
Была матрица:

1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4

Стала:
4 4 4 4
3 3 3 3
2 2 2 2
1 1 1 1

Выручайте заранее, благодарю, можете делать на C++.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.02.2010, 12:32     Переворот матрицы~изображения.
Посмотрите здесь:

C++ Переворот строки
реверсивный переворот C++
Переворот строки C++
Переворот строки C++
Переворот слов C++
Переворот массива C++
C++ Переворот массива
Переворот слов C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
22.02.2010, 13:41     Переворот матрицы~изображения. #2
Код
  for(i=0; i<H; i++) {
      for(j=0; j<W; j++) {
          t = a[i][j];
          a[i][j] = a[n-i-1][j] ;
          a[n-1-1] = t;
      }
  }
Это что-то поменяет (не то строки, не то столбцы).
Чтоб поменять другое (не то столбцы, не то строки)
поменяй всюду i <--> j H <--> W
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
22.02.2010, 14:24     Переворот матрицы~изображения. #3
А если спросят что такое n

Добавлено через 32 минуты
Это ужасно и не эффективно, но зато работает.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream.h>
#include <stdlib.h>
long transform(int *matrix ,const int H,const int W); 
int main(){
const int H = 4;
const int W = 4;
 
int matrix[H][W] = {
    {1,1,1,1},
    {2,2,2,2},
    {3,3,3,3},
    {4,4,4,4}
 
};
transform(&matrix[0][0],H,W);
for(int i=0 ;i<H; i++){
    for(int j=0;j<W;j++){
cout<<' '<<matrix[i][j];
    }
cout<<'\n';
}
 
 
return 0;
}
 
long transform(int *matrix ,const int H,const int W){
//Надо применить это алгоритм применить в соответсвтии с количеством строк
int * tstr = new int[W]; 
int i,j,p;
for(i=1;i<H;i++){
   for(p=0;p<W;p++)tstr[p]=matrix[i*W+p];
      for(j=i;j>0;j--){ 
          for(p=0;p<W;p++)matrix[j*W+p] = matrix[(j-1)*W+p] ;
    }    
for(p=0;p<W;p++)matrix[j*W+p]=tstr[p];
 
}
 
delete []tstr;
return 0;
}
Добавлено через 6 минут
Может кто-нибудь оптимизирует.
Yandex
Объявления
22.02.2010, 14:24     Переворот матрицы~изображения.
Ответ Создать тему
Опции темы

Текущее время: 06:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru