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

перемешать матрицу - C++

Восстановить пароль Регистрация
 
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
04.09.2013, 15:19     перемешать матрицу #1
Вобщем нужен только сам цикл который бы перемешивал все элементы в матрице случайным образом,хотя бы идею как это реализовать то
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
04.09.2013, 15:28     перемешать матрицу #2
создать функцию swap(int x,int y, int x2, int y2, type[][] matrix); которая меняла бы местами любый два элемента любой матрицы.

брать два случайных числа x и y и использовать функцию
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,602
Записей в блоге: 17
04.09.2013, 15:31     перемешать матрицу #3
std::random_suffle<> и пройтись по строкам

http://www.cplusplus.com/reference/a...andom_shuffle/
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
04.09.2013, 17:27  [ТС]     перемешать матрицу #4
C++
1
2
3
4
5
6
7
8
9
10
    srand(time(NULL));
    for (int i = 0; i < n-1;i++) 
    {
        for (int j = 0; j < m; j++) 
        { 
 
            swap(A[i][j],A[rand() % m][rand() % n]);
 
        }
    }

Вот такая запись вроде делает то что нужно,но я не могу понять,почему она у меня вылетает за диапазон строк,n-1 написал,и в последнем столбце редко сортируются символы все,примерно 1 к 10,ну это может быть случайность уже,а вот по поводу выхода за границу хз
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,602
Записей в блоге: 17
04.09.2013, 17:39     перемешать матрицу #5
Все верное было
C++
1
for (int i = 0; i < n; i++)
Строки со столбцами не перепутали случайно ?
Raali
572 / 276 / 12
Регистрация: 06.07.2013
Сообщений: 917
Завершенные тесты: 1
04.09.2013, 17:46     перемешать матрицу #6
Цитата Сообщение от a.n.o.n.i.m Посмотреть сообщение
swap(A[i][j],A[rand() % m][rand() % n]);
каким образом она меняет элементы, она принимает ссылки?
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,602
Записей в блоге: 17
04.09.2013, 17:50     перемешать матрицу #7
Вероятно std::swap

http://www.cplusplus.com/reference/algorithm/swap/
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
04.09.2013, 19:11  [ТС]     перемешать матрицу #8
насчет std::
using namespace std пишу

Avazart и вправду не внимательность,перепутал,теперь все гуд
Миниатюры
перемешать матрицу  
Avazart
 Аватар для Avazart
6901 / 5141 / 252
Регистрация: 10.12.2010
Сообщений: 22,602
Записей в блоге: 17
04.09.2013, 19:16     перемешать матрицу #9
Имена нужно адекватные давать переменным, тогда легче искать ошибки.

C++
1
2
3
4
5
    for (int сol=0; сol<col_count; ++col) 
    {
        for (int row=0; row<row_count; ++row) 
        {
          // ...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.09.2013, 19:19     перемешать матрицу
Еще ссылки по теме:

C++ C++ Перемешать буквы слов из файла
Как рандомно перемешать уже имеющуюся последовательность? C++

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

Или воспользуйтесь поиском по форуму:
a.n.o.n.i.m
137 / 137 / 15
Регистрация: 26.02.2011
Сообщений: 492
04.09.2013, 19:19  [ТС]     перемешать матрицу #10
Да еще с учебников то i да j либо m да n поэтому уже на автомате пишу
Yandex
Объявления
04.09.2013, 19:19     перемешать матрицу
Ответ Создать тему
Опции темы

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