Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2013, 12:54   #1
dimkaok
 
Регистрация: 06.03.2013
Сообщений: 4
По умолчанию Двумерный массив с уникальными элементами в столбце

Добрый день. Помогите пожалуйста решить задачу. Есть двумерный массив 3*5, который генерируется случайным образом. Необходимо сделать, чтобы элементы столбца были уникальными

Код:
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];
}

Последний раз редактировалось Stilet; 06.03.2013 в 13:23.
dimkaok вне форума Ответить с цитированием
Старый 06.03.2013, 13:27   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Допустим так:
Код:
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++) {
 bool b=false;
 for(;!b;){
  int k= valuesForMagicMatrix [rand( ) % 8];
  for(int h=0;h<column && !b;h++) if(magicMatrix [i][h]==k){b=true;}
  if(b)  magicMatrix [i][j] = valuesForMagicMatrix [rand( ) % 8];
 }
}
}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.03.2013, 14:00   #3
dimkaok
 
Регистрация: 06.03.2013
Сообщений: 4
По умолчанию

Цитата:
Допустим так:
Код:

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++) {
bool b=false;
for(;!b{
int k= valuesForMagicMatrix [rand( ) % 8];
for(int h=0;h<column && !b ;h++) if(magicMatrix [i][h]==k){b=true;}
if(b) magicMatrix [i][j] = valuesForMagicMatrix [rand( ) % 8];
}
}
}
Получается бесконечный цикл. А если заменить for( ; !b; ) на for( ; b; ), то вот что выдает:
-858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460
-858993460 -858993460 -858993460 -858993460 -858993460
dimkaok вне форума Ответить с цитированием
Старый 06.03.2013, 14:03   #4
dimkaok
 
Регистрация: 06.03.2013
Сообщений: 4
По умолчанию

Код:
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 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массив с не повторяющимися элементами kalosha-stepa Паскаль, Turbo Pascal, PascalABC.NET 2 18.09.2012 23:43
ПАСКАЛЬ.Заданы два одномерных массива.Объединить их в один массив, включив второй массив между K-ым и (K+1)-м элементами первого. dmitriy20104 Помощь студентам 7 06.07.2012 20:44
Дан двумерный массив. Найти сумму и количество элементов в каждом столбце, положительных и лежащих вне главной диагонали Alexbmgn Помощь студентам 1 25.12.2011 22:21
Двумерный массив, перестановка столбцов с max и min элементами (pascal) Mirk Помощь студентам 2 25.05.2009 20:33