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

Двумерный массив с уникальными элементами в столбце - C++

Восстановить пароль Регистрация
 
dimkaok
 Аватар для dimkaok
1 / 1 / 0
Регистрация: 06.03.2013
Сообщений: 128
06.03.2013, 12:58     Двумерный массив с уникальными элементами в столбце #1
Добрый день. Помогите пожалуйста решить задачу. Есть двумерный массив 3*5, который генерируется случайным образом. Необходимо сделать, чтобы элементы столбца были уникальными

C++
1
2
3
4
5
6
void magicMatrixInit ( ) { 
        int valuesForMagicMatrix [] = { 1, 2, 3, 4, 5, 6, 7, 8 }; 
        for (int i = 0; i < row; i++) 
            for (int j = 0; j < column; j++) 
                magicMatrix [i][j] = valuesForMagicMatrix [rand( ) % 8]; 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.03.2013, 12:58     Двумерный массив с уникальными элементами в столбце
Посмотрите здесь:

C++ С++ Дан двумерный массив целых чисел. В каждом столбце найти сумму и количество нечетных чисел.
C++ Дано двумерный массив целых чисел. В каждом столбце найти сумму и количество чисел.(исправить)
C++ Двумерный массив. Поиск максимального элемента в выбранном столбце.
заполнить двумерный массив элементами в соответствии с рисунком C++
C++ Как можно вложить двумерный массив в двумерный?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mysterion777
 Аватар для Mysterion777
-74 / 48 / 2
Регистрация: 11.01.2013
Сообщений: 199
06.03.2013, 13:02     Двумерный массив с уникальными элементами в столбце #2
C++
1
2
3
4
5
6
void magicMatrixInit ( ) { 
       
        for (int i = 0; i < row; i++) 
            for (int j = 0; j < column; j++) 
                magicMatrix [i][j] = rand( ) % 10000; 
}
dimkaok
 Аватар для dimkaok
1 / 1 / 0
Регистрация: 06.03.2013
Сообщений: 128
06.03.2013, 13:09  [ТС]     Двумерный массив с уникальными элементами в столбце #3
void magicMatrixInit ( ) {

for (int i = 0; i < row; i++)
for (int j = 0; j < column; j++)
magicMatrix [i][j] = rand( ) % 10000;
}
Это решение не подходит. Мне нужно, не свести вероятность появления одинакового символа к минимуму, а вообще исключить такую возможность. И инициализировать можно только элементами:
C++
1
 int valuesForMagicMatrix [] = { 1, 2, 3, 4, 5, 6, 7, 8 };
Mysterion777
 Аватар для Mysterion777
-74 / 48 / 2
Регистрация: 11.01.2013
Сообщений: 199
06.03.2013, 13:22     Двумерный массив с уникальными элементами в столбце #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
void magicMatrixInit ( ) { 
        int valuesForMagicMatrix [] = { 1, 2, 3, 4, 5, 6, 7, 8 }; 
        for (int i = 0; i < row; i++) 
            for (int j = 0; j < column; j++) {
                int k=1,p;
                while (k!=0){
                       k=0;
                       p=valuesForMagicMatrix [rand( ) % 8];
                       for(int l=0;l<column;l++)if(p==magicMatrix[l][i])k++;
                       }
                magicMatrix [i][j] = p;}
}
volvo
Супер-модератор
 Аватар для volvo
21811 / 14174 / 3946
Регистрация: 22.10.2011
Сообщений: 25,040
Записей в блоге: 2
06.03.2013, 13:53     Двумерный массив с уникальными элементами в столбце #5
Mysterion777, зачем проверять весь столбец, если достаточно проверить только то, что уже было сгенерировано? Кроме того, твоя функция не гарантирует уникальности элементов в столбце:
Двумерный массив с уникальными элементами в столбце

Вот этот вариант работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void magicMatrixInit ( )
{
        int valuesForMagicMatrix [] = { 1, 2, 3, 4, 5, 6, 7, 8 };
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < column; j++)
            {
                int p, k;
                do
                {
                    p = valuesForMagicMatrix[rand() % 8];
                    for(k = 0; k < i && p != magicMatrix[k][j]; k++);
                } while(k != i);
                magicMatrix [i][j] = p;
            }
        }
}
dimkaok
 Аватар для dimkaok
1 / 1 / 0
Регистрация: 06.03.2013
Сообщений: 128
06.03.2013, 14:04  [ТС]     Двумерный массив с уникальными элементами в столбце #6
Ура, заработало!!! UI, спасибо, с меня пиво)))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.03.2013, 20:43     Двумерный массив с уникальными элементами в столбце
Еще ссылки по теме:

Двумерный массив с уникальными элементами C++
C++ Заполнить одномерный массив уникальными числами
Двумерный массив. Сумму элементов массива, расположенных между первым и последним отрицательными элементами C++

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

Или воспользуйтесь поиском по форуму:
Mysterion777
 Аватар для Mysterion777
-74 / 48 / 2
Регистрация: 11.01.2013
Сообщений: 199
06.03.2013, 20:43     Двумерный массив с уникальными элементами в столбце #7
Цитата Сообщение от UI Посмотреть сообщение
Mysterion777, зачем проверять весь столбец, если достаточно проверить только то, что уже было сгенерировано? Кроме того, твоя функция не гарантирует уникальности элементов в столбце:
Вложение 241069

Вот этот вариант работает:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void magicMatrixInit ( )
{
        int valuesForMagicMatrix [] = { 1, 2, 3, 4, 5, 6, 7, 8 };
        for (int i = 0; i < row; i++)
        {
            for (int j = 0; j < column; j++)
            {
                int p, k;
                do
                {
                    p = valuesForMagicMatrix[rand() % 8];
                    for(k = 0; k < i && p != magicMatrix[k][j]; k++);
                } while(k != i);
                magicMatrix [i][j] = p;
            }
        }
}
мой тоже работает просто писал быстро сходу убегать надо было просто изменить 1 строчку догадаться можно было
C++
1
2
3
4
5
6
7
8
9
10
11
12
void magicMatrixInit ( ) { 
        int valuesForMagicMatrix [] = { 1, 2, 3, 4, 5, 6, 7, 8 }; 
        for (int i = 0; i < row; i++) 
            for (int j = 0; j < column; j++) {
                int k=1,p;
                while (k!=0){
                       k=0;
                       p=rand( ) % 8;
                       for(int l=0;l<column;l++)if(p==magicMatrix[l][i])k++;
                       }
                magicMatrix [i][j] = p;}
}
Yandex
Объявления
06.03.2013, 20:43     Двумерный массив с уникальными элементами в столбце
Ответ Создать тему
Опции темы

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