Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/22: Рейтинг темы: голосов - 22, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
1

Переставить блоки матрицы размера n*n крест накрест.

11.07.2011, 18:33. Показов 4050. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Дана действительная квадратная матрица порядка 2n. Получить новую матрицу,переставляя её блоки размера n*n крест накрест на языке Си.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.07.2011, 18:33
Ответы с готовыми решениями:

Перестановка элементов крест накрест
Ребята, какие есть идеи по поводу перестановки элементов массива крест накрест по блокам из 4...

Переставить блоки матрицы размера n*n крест накрест.
дана действительная квадратная матрица порядка 2n.получить новую матрицу переставляя её блоки...

Переставить блоки матрицы крест-накрест
не мог ли бы вы помочь с решением данных задач, собственно все задачи на фото. в файлах...

Получить новую матрицу, переставляя ее блоки размера n крест-накрест
Пусть дана вещественная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки...

18
31 / 31 / 3
Регистрация: 10.05.2011
Сообщений: 120
11.07.2011, 18:35 2
Цитата Сообщение от Kotowed Посмотреть сообщение
Дана действительная квадратная матрица порядка 2n. Получить новую матрицу,переставляя её блоки размера n*n крест накрест на языке Си.
Помог бы, но не совсем понял задание )))))))
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
11.07.2011, 18:39 3
Kotowed, отсюда пример немного переделайте...
0
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
11.07.2011, 18:45  [ТС] 4
Цитата Сообщение от absokolov Посмотреть сообщение
Помог бы, но не совсем понял задание )))))))
Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя её блоки размера N x N :
Изображения
 
0
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
11.07.2011, 19:59  [ТС] 5
Цитата Сообщение от easybudda Посмотреть сообщение
Kotowed, отсюда пример немного переделайте...
как я понимаю вот в этом блоке надо переделать?


C
1
2
3
4
5
6
7
8
9
10
11
12
13
 
        for ( i = 0; i < N; ++i )
                for ( j = 0; j < N; ++j )
                        matrix[i][j] = 1;
        for ( i = 0; i < N; ++i )
                for ( j = N; j < DVA_N; ++j )
                        matrix[i][j] = 2;
        for ( i = N; i < DVA_N; ++i )
                for ( j = N; j < DVA_N; ++j )
                        matrix[i][j] = 3;
        for ( i = N; i < DVA_N; ++i )
                for ( j = 0; j < N; ++j )
                        matrix[i][j] = 4;
0
385 / 229 / 12
Регистрация: 06.07.2011
Сообщений: 512
11.07.2011, 20:07 6
нет, не в этом. еще попытка?
1
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
11.07.2011, 20:15  [ТС] 7
Цитата Сообщение от Paporotnik Посмотреть сообщение
нет, не в этом. еще попытка?
Тогда тут?

C
1
2
3
4
5
6
    for ( i = 0; i < N; ++i ){
                memcpy(buf, &matrix[i][0], sizeof(int) * N);
                memcpy(&matrix[i][0], &matrix[N + i][0], sizeof(int) * N);
                memcpy(&matrix[N + i][0], &matrix[N + i][N], sizeof(int) * N);
                memcpy(&matrix[N + i][N], &matrix[i][N], sizeof(int) * N);
                memcpy(&matrix[i][N], buf, sizeof(int) * N);
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
11.07.2011, 20:19 8
Цитата Сообщение от Kotowed Посмотреть сообщение
Тогда тут?
да, именно тут
1
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
11.07.2011, 20:27  [ТС] 9
Цитата Сообщение от Maxwe11 Посмотреть сообщение
да, именно тут
Теперь бы понять что именно :cofee2:
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
11.07.2011, 20:30 10
Цитата Сообщение от Kotowed Посмотреть сообщение
Теперь бы понять что именно :cofee2:
гугл вам в помощь, посмотрите что такое memcpy, подумайте подходит вам или нет, если нет, то значит надо найти другую функцию по работе с памятью

подсказка префикc названий функций по работе с памятью - mem*
0
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
11.07.2011, 20:33  [ТС] 11
Цитата Сообщение от Maxwe11 Посмотреть сообщение
гугл вам в помощь, посмотрите что такое memcpy, подумайте подходит вам или нет, если нет, то значит надо найти другую функцию по работе с памятью

подсказка префикc названий функций по работе с памятью - mem*
А вы не могли бы помочь? Просто было бы прекрасно, а то ещё задания имеются, над которыми приходится голову ломать
0
Каратель
Эксперт С++
6609 / 4028 / 401
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
11.07.2011, 20:35 12
вы испугались слова "подумайте" или слова "гугл"? так в армии нет ни того ни другого
0
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
11.07.2011, 20:38  [ТС] 13
Цитата Сообщение от Maxwe11 Посмотреть сообщение
вы испугались слова "подумайте" или слова "гугл"? так в армии нет ни того ни другого
До армии ещё далеко и рановато.
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12458 / 7482 / 1753
Регистрация: 25.07.2009
Сообщений: 13,762
11.07.2011, 20:42 14
Kotowed, "найди 7 отличий"
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
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#define N 4
#define DVA_N (N * 2)
 
int main(void){
        int matrix[DVA_N][DVA_N], i, j;
        int buf[N];
        
        for ( i = 0; i < N; ++i )
                for ( j = 0; j < N; ++j )
                        matrix[i][j] = 1;
        for ( i = 0; i < N; ++i )
                for ( j = N; j < DVA_N; ++j )
                        matrix[i][j] = 2;
        for ( i = N; i < DVA_N; ++i )
                for ( j = N; j < DVA_N; ++j )
                        matrix[i][j] = 3;
        for ( i = N; i < DVA_N; ++i )
                for ( j = 0; j < N; ++j )
                        matrix[i][j] = 4;
        
        printf("Before:\n");
        for ( i = 0; i < DVA_N; ++i )
                for ( j = 0; j < DVA_N; ++j )
                        printf("%2d%c", matrix[i][j], ( j < DVA_N - 1 ) ? ' ' : '\n');
        
        for ( i = 0; i < N; ++i ){
                memcpy(buf, &matrix[i][0], sizeof(int) * N);
                memcpy(&matrix[i][0], &matrix[N + i][N], sizeof(int) * N);
                memcpy(&matrix[N + i][N], buf, sizeof(int) * N);
                memcpy(buf, &matrix[i][N], sizeof(int) * N);
                memcpy(&matrix[i][N], &matrix[N + i][0], sizeof(int) * N);
                memcpy(&matrix[N + i][0], buf, sizeof(int) * N);
        }
        
        printf("After:\n");
        for ( i = 0; i < DVA_N; ++i )
                for ( j = 0; j < DVA_N; ++j )
                        printf("%2d%c", matrix[i][j], ( j < DVA_N - 1 ) ? ' ' : '\n');
        
        exit(0);
}
Ну и grizlik78 там верно заметил - это я что-то странное написал...
1
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
11.07.2011, 21:27 15
Для того, чтобы работа с матрицами была эффективной и приятной, необходимо скачать у меня класс mymatrix, который распространяется по лицензии GPL. Тогда, в частности, эта задача сведётся к такому коду:
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
#include <mymatrix.h>
#include <algorithm>
#define dlina_storoni 10 
using namespace std;
 
int main () {
 
 //Кропаем матрицу и инициализируем её
 matrix<double> matritsa (dlina_storoni, dlina_storoni);
 matritsa.init_rand (0, 99);
 
 //смотрим матрицу
 matritsa.vivod ();
 printf ("\n\n\n");
 
 
 //пошёл обмен
 for (int i= 0; i< dlina_storoni; i++)
  for (int j= 0; j< dlina_storoni/2;j++)
   swap(matritsa[i][j], matritsa[i][j+ dlina_storoni/2]);
 
 //И ещё раз:
 for (int j= 0; j< dlina_storoni; j++)
  for (int i= 0; i< dlina_storoni/2; i++)
   swap(matritsa[i][j], matritsa[i+ dlina_storoni/2][j]);
 
 //и ещё смотрим, чё получилось
 matritsa.vivod ();
 
 getchar ();
 return 0;
}
Миниатюры
Переставить блоки матрицы размера n*n крест накрест.  
1
Jupiter
11.07.2011, 22:10
  #16

Не по теме:

Цитата Сообщение от kravam Посмотреть сообщение
Для того, чтобы работа с матрицами была эффективной и приятной, необходимо скачать у меня класс mymatrix
kravam, где скачать?:)а документация есть?)

0
быдлокодер
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,679
11.07.2011, 22:18 17
Скачать у меня, этот класс мой, вся документация на русском языке присутствует.
0
asics
11.07.2011, 22:23
  #18

Не по теме:

Цитата Сообщение от kravam Посмотреть сообщение
Скачать у меня, этот класс мой, вся документация на русском языке присутствует.
ну клоун...

0
Jupiter
11.07.2011, 22:24     Переставить блоки матрицы размера n*n крест накрест.
  #19

Не по теме:

Цитата Сообщение от kravam Посмотреть сообщение
Скачать у меня, этот класс мой, вся документация на русском языке присутствует.
ну дык кинь ссылку в личку)

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.07.2011, 22:24

Получить новую матрицу, переставляя ее блоки размера n*n крест-накрест
Здравствуйте, помогите с заданием. Дана действительная квадратная матрица порядка 2n. Получить...

Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки размера n*n крест-накрест
Здравствуйте, помогите с заданием. Дана действительная квадратная матрица порядка 2n. Получить...

Получить новую матрицу, переставляя блоки исходной крест-накрест
Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя её блоки...

Получить новую матрицу, переставляя блоки исходной размером n x n крест-накрест
Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru