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

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

Войти
Регистрация
Восстановить пароль
 
Wuzup
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 47
#1

Перестановки в двумерных массивах - C++

26.03.2013, 14:47. Просмотров 354. Ответов 4
Метки нет (Все метки)

Нужно переставить части квадратной матрицы (размер kxk (где к-четное))
так как показано на рисунках
1)В первом массиве поменять левую и правую части местами
2)во втором массиве четверти сместить по часовой стрелке
Напишите пожалуйста циклы для перестановокПерестановки в двумерных массивах
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.03.2013, 14:47     Перестановки в двумерных массивах
Посмотрите здесь:

Ошибка в двумерных массивах - C++
Пишет ошибку Run-Time Check Failure #2 - Stack around the variable 'mas2' was corrupted. Задание:Сформировать двумерный массив A(4,3)...

Столбцы в двумерных массивах - C++
Помогите пожалуйста) Мне нужно найти в матрице такие столбцы и строки, сума элементов которых будет равна. Обьясните пожалуйста, как именно...

Удаление строк в двумерных массивах - C++
Добрый день,мне нужна ваша помощь.Суть задания сформировать программу с интерфейсом с помощью кейсов. Пример cout<<”1. Формированние...

Получить в двумерных массивах три проекции трехмерного тела - C++
В трехмерном массиве k(l, m, n), состоящем из нулей и единиц, хранится сеточное изображение некоторого трехмерного тела. Получить в...

сровнять 2 двумерных массива - C++
нужно узнать находится ли в елементе по порядку mas число 46

Обработка двумерных масивов - C++
Задана матрица А(n,n). Определить максимальный элемент среди элементов матрицы, расположенных выше главной диагонали, и минимальный...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.03.2013, 15:39     Перестановки в двумерных массивах #2
В обоих случаях надо начать с правила преобразования индексов. А дальше - дело техники.
Цитата Сообщение от Wuzup Посмотреть сообщение
1)В первом массиве поменять левую и правую части местами
Если элемент лежит в левой части (т.е. его индекс по вертикали i <= k/2) поставить на место i+k/2 в той же строке.
Цитата Сообщение от Wuzup Посмотреть сообщение
2)во втором массиве четверти сместить по часовой стрелке
Определяем для каждого квадранта свое правило: по сути то же самое, что в п.1, но с дополнительными ограничениями по второй координате.
Wuzup
0 / 0 / 0
Регистрация: 01.11.2012
Сообщений: 47
26.03.2013, 15:55  [ТС]     Перестановки в двумерных массивах #3
C
1
2
3
4
5
6
7
8
for (i=0;i<k;i++)
  {
   for(j=0;j<k;j++)
      {  
         if (i<=k/2)
    { array[i][j]=array[i+k/2][j];}
       }
   };
так правильно для первой части?
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
26.03.2013, 17:11     Перестановки в двумерных массивах #4
Вот Вам решение для первой части задания:
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
void fill( int** a, int n )
{
   for( int i=0; i<n; ++i )
      for( int j=0; j<n; ++j )
         a[i][j] = rand() % 100;   
}
 
void print( int** a, int n )
{
   for( int i=0; i<n; ++i )
   {
      for( int j=0; j<n; ++j )
      {
         cout.width( 3 );
         cout << a[i][j];
      }
      cout << endl;
   }
}
 
void left2right( int**a, int n )
{
   cout << "left2right" << endl;
   for( int i=0; i<n; ++i )
   {
      for( int j=0; j<n/2; ++j )
      {
         int tmp = a[i][j];
         a[i][j] = a[i][j+n/2];
         a[i][j+n/2] = tmp;
      }
   }   
}
 
int main() {
   
   const int N = 4;
   
   srand( time(0));
   
   int** array = new int*[N];
   for( int i=0;i<N; ++i )
      array[i] = new int[N];
   
   fill( array, N );
   
   print( array, N );
   
   left2right( array, N );
   
   print( array, N );
 
   return 0;
}
Разбирайтесь
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.03.2013, 17:40     Перестановки в двумерных массивах
Еще ссылки по теме:

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

Вычисление разности двумерных массивов. - C++
Дано два произвольны двумерных массива A,B с одинаковыми размерностями. Нужно написать функцию нахождения разности их элементов. Сама...

Сложение двумерных std:vector - C++
Здравствуйте. Как это сделать для двумерных векторов? vector&lt;vector&lt;int&gt;&gt; m = { (vector&lt;int&gt;({ 1, 2 }), vector&lt;int&gt;({ 3, 4 })) }; ...

Пузырьковая сортировка двумерных массивов - C++
Недавно начал изучать С++ по книге Герберта Шилдта. Заступорился на сортировке двумерных массивов, поясните пожалуйста как это работает....


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

Или воспользуйтесь поиском по форуму:
eocron
Кактус
66 / 66 / 6
Регистрация: 23.05.2012
Сообщений: 343
26.03.2013, 17:40     Перестановки в двумерных массивах #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int square(int *a[],int k)
{
    int buf;
    for(int i=0;i<k/2;i++)
    {
            for(int j=0;j<k/2;j++)
            {
                    buf = a[i][j];
                    a[i][j] = a[i+k/2][j];
                    a[i+k/2][j] = a[i+k/2][j+k/2];
                    a[i+k/2][j+k/2] = a[i][j+k/2];
                    a[i][j+k/2] = buf;
            }
    }
}
вот второе.
Yandex
Объявления
26.03.2013, 17:40     Перестановки в двумерных массивах
Ответ Создать тему
Опции темы

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