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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.80
Kotowed
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
#1

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

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

Дана действительная квадратная матрица порядка 2n. Получить новую матрицу,переставляя её блоки размера n*n крест накрест на языке Си.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.07.2011, 18:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Переставить блоки матрицы размера n*n крест накрест. (C++):

Перестановка элементов крест накрест - C++
Ребята, какие есть идеи по поводу перестановки элементов массива крест накрест по блокам из 4 элементов? на данный момент я дошла до вот...

Получить новую матрицу, переставляя ее блоки размера nxn - C++
Прошу помощи с написанием программы. Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя ее блоки...

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

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

Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя её блоки размера n x n! - C++
Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя её блоки размера n x n!( рисунок приложен) ...

Разработать алгоритм и написать по нему программу умножения матрицы А размера m × n на матрицу В размера n × p. Значение величин m, n, р выбрать из та - C++
Разработать алгоритм и написать по нему программу умножения матрицы А размера m × n на матрицу В размера n × p. Значение величин m, n, р...

18
absokolov
29 / 29 / 1
Регистрация: 10.05.2011
Сообщений: 120
11.07.2011, 18:35 #2
Цитата Сообщение от Kotowed Посмотреть сообщение
Дана действительная квадратная матрица порядка 2n. Получить новую матрицу,переставляя её блоки размера n*n крест накрест на языке Си.
Помог бы, но не совсем понял задание )))))))
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,811
11.07.2011, 18:39 #3
Kotowed, отсюда пример немного переделайте...
0
Kotowed
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
11.07.2011, 18:45  [ТС] #4
Цитата Сообщение от absokolov Посмотреть сообщение
Помог бы, но не совсем понял задание )))))))
Дана действительная квадратная матрица порядка 2n. Получить новую матрицу, переставляя её блоки размера N x N :
0
Изображения
 
Kotowed
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
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
11.07.2011, 20:07 #6
нет, не в этом. еще попытка?
1
Kotowed
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
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.07.2011, 20:19 #8
Цитата Сообщение от Kotowed Посмотреть сообщение
Тогда тут?
да, именно тут
1
Kotowed
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
11.07.2011, 20:27  [ТС] #9
Цитата Сообщение от Maxwe11 Посмотреть сообщение
да, именно тут
Теперь бы понять что именно :cofee2:
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.07.2011, 20:30 #10
Цитата Сообщение от Kotowed Посмотреть сообщение
Теперь бы понять что именно :cofee2:
гугл вам в помощь, посмотрите что такое memcpy, подумайте подходит вам или нет, если нет, то значит надо найти другую функцию по работе с памятью

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

подсказка префикc названий функций по работе с памятью - mem*
А вы не могли бы помочь? Просто было бы прекрасно, а то ещё задания имеются, над которыми приходится голову ломать
0
Jupiter
Каратель
Эксперт С++
6559 / 3980 / 227
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
11.07.2011, 20:35 #12
вы испугались слова "подумайте" или слова "гугл"? так в армии нет ни того ни другого
0
Kotowed
0 / 0 / 0
Регистрация: 11.07.2011
Сообщений: 12
11.07.2011, 20:38  [ТС] #13
Цитата Сообщение от Maxwe11 Посмотреть сообщение
вы испугались слова "подумайте" или слова "гугл"? так в армии нет ни того ни другого
До армии ещё далеко и рановато.
0
easybudda
Модератор
Эксперт CЭксперт С++
9683 / 5633 / 956
Регистрация: 25.07.2009
Сообщений: 10,811
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
kravam
быдлокодер
1700 / 887 / 45
Регистрация: 04.06.2008
Сообщений: 5,491
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;
}
1
Миниатюры
Переставить блоки матрицы размера n*n крест накрест.  
11.07.2011, 21:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.07.2011, 21:27
Привет! Вот еще темы с ответами:

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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