Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
 Аватар для dimkaok
2 / 2 / 0
Регистрация: 06.03.2013
Сообщений: 128

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

06.03.2013, 12:58. Показов 1263. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Помогите пожалуйста решить задачу. Есть двумерный массив 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]; 
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.03.2013, 12:58
Ответы с готовыми решениями:

Двумерный массив с уникальными элементами
Доброго времени суток!.Помогите пожалуйста с этим разобраться ,я понимаю что это надо делать через тип данных bool возвращающий 0-ложь и...

Заполнить двумерный массив случайными уникальными числами
Задача: заполнить двумерный массив случайными уникальными числами Добавлено через 8 минут Байт В той теме немного другая задача

Двумерный массив, пред последнему элементу в столбце присвоить 0, а последнему 1 и так в каждом столбце
Двумерный массив, пред последнему элементу в столбце присвоить 0, а последнему 1 итак в каждом столбце.

6
 Аватар для Mysterion777
49 / 49 / 13
Регистрация: 11.01.2013
Сообщений: 198
06.03.2013, 13:02
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; 
}
0
 Аватар для dimkaok
2 / 2 / 0
Регистрация: 06.03.2013
Сообщений: 128
06.03.2013, 13:09  [ТС]
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 };
0
 Аватар для Mysterion777
49 / 49 / 13
Регистрация: 11.01.2013
Сообщений: 198
06.03.2013, 13:22
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;}
}
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33195 / 21491 / 8233
Регистрация: 22.10.2011
Сообщений: 36,880
Записей в блоге: 12
06.03.2013, 13:53
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;
            }
        }
}
1
 Аватар для dimkaok
2 / 2 / 0
Регистрация: 06.03.2013
Сообщений: 128
06.03.2013, 14:04  [ТС]
Ура, заработало!!! UI, спасибо, с меня пиво)))
0
 Аватар для Mysterion777
49 / 49 / 13
Регистрация: 11.01.2013
Сообщений: 198
06.03.2013, 20:43
Цитата Сообщение от 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;}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.03.2013, 20:43
Помогаю со студенческими работами здесь

Дан двумерный массив 5 на 5. Найти количество простых чисел в каждом столбце матрицы и вывести в одномерный массив
Из матрицы 5на5 вывести количество простых чисел в одномерный массив, в котором будет 5 чисел в строке. То есть по каждому столбцу матрицы....

Двумерный массив.Найти сумму элементов в каждом столбце и занести ее в новый одномерный массив.Где ошибка?
program Project14; {$APPTYPE CONSOLE} uses SysUtils; type mas1=array of integer; mas2=array of integer; Var...

Заполнение уникальными элементами combobox
Всем привет, ребят. В общем такая проблема. У меня есть компонент комбобокс, и я хочу, чтобы при инициализации формы он заполнялся...

Ввести двумерный массив 10х10 и создать одномерный массив с упорядоченными по убыванию элементами двумерного массива.
Здравствуйте, срочно нужна помощь! 1. Ввести двумерный массив 10х10 и создать одномерный массив с упорядоченными по убыванию...

Создать матрицу NxN с уникальными элементами
Как создать неповторимый элементы матрицы NxN ???


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru