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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
J_Max
Заблокирован
#1

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

22.02.2010, 12:32. Просмотров 663. Ответов 2
Метки нет (Все метки)

Дана матрица 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++
Дали такие задания: Задание 1 В строке, содержащей несколько слов, разделенных пробелом, перевернуть каждое слово. Входные...

Переворот масива - C++
Здравствуйте. Помагите пожалучто, у меня как то криво масив переворачиваетса... #include <iostream> #include <ctime> using namespace...

реверсивный переворот - C++
Создать 2 объекта разработанного класса. Одной из компонент класса является динамическая символьная строка. В результате выполнения...

Переворот слов - C++
#include <iostream> #include <string> #include <sstream> int main() { std::string input; std::getline( std::cin,...

Переворот рисунка потоком - C++
Ребят, подскажите с чего начать? Нужно загрузить изображение и перевернуть его потоком. При этом сделать кнопку для прерывания операции.

Классы в C++. Переворот дроби. - C++
Есть задачку не могу сделать помогите , нужно написать класс по такому принципу #include <iostream> using namespace std; class...

Переворот линейного списка - C++
Построить линейный список из нескольких динамических переменных, содержащих вводимые целые числа. Если введенный список упорядочен по...

Переворот столбец со словами - C++
Вечер добрый. Нужна помощь. Пользователь вводит имя файла, содержащего слова в столбик. Программа копирует все слова во второй файл,...

Массив: переворот половины массива - C++
Народ. Помогите пожалуйста с программой. Нужно сделать переворот половины массива. Нужно изменить программу. (желательно с...

Переворот массива с произвольного индекса - C++
Здравствуйте. Помогите написать программу, которая бы переворачивала массив с индекса, который задают с клавиатуры, т.е. вводится...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
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
1235 / 773 / 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     Переворот матрицы~изображения.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru