Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
khaleesi
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 12
#1

Массив со строками неповторяющихся чисел от 1 до 8, заполненный случайным образом

21.05.2014, 22:43. Просмотров 969. Ответов 6
Метки нет (Все метки)

Всем доброго времени суток! Прошу указать мне на ошибку. Стою на месте, не могу никак сдвинуться. Нужно, чтобы в каждой строке случайным образом были расставлены числа от 1 до 8. И самое главное, чтобы они не повторялись.
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
int main()
{
    srand(time_t(NULL)); 
    int N = 8; 
    int **Population = new int*[N];
    for (int i = 0; i<N; i++) Population[i] = new int[N];
    int q = 0;
    bool flag;
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            q = rand() % N;
            flag = 1;
            for (int b = 0; b < j; b++) {
 
                if (Population[b][i] == q)
                    flag = 0;
                if (flag)
                    Population[j][i] = q;
                else j--;
            }
        }
    }
 
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            cout << Population[i][j] << ' ';
        }
        cout << "\n";
    }
       for (int i = 0; i<N; i++) delete[]Population[i]; 
       delete[]Population;
       return 0;
}

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2014, 22:43
Ответы с готовыми решениями:

Дан массив целых чисел из n элементов, заполненный случайным образом числами из заданного пользователями промежутка
Дан массив целых чисел из n элементов, заполненный случайным образом числами из...

Задать случайным образом одномерный массив
Массив Постановка задачи : 2. 1. Задать случайным образом одномерный массив...

Задать случайным образом одномерный массив размерности N из целочисленных элементов
Задать случайным образом одномерный массив размерности N из целочисленных...

Задать случайным образом одномерный массив размерности N из целочисленных элементов, принадлежащих отрезку
Задать случайным образом одномерный массив размерности N из целочисленных...

Массив случайных неповторяющихся чисел
У меня есть например 50 кнопок как сделать так чтоб каждая кнопка имела свой...

6
kasan
Чорумфанин
338 / 338 / 319
Регистрация: 06.03.2014
Сообщений: 886
21.05.2014, 23:57 #2
вам в раздел C++
0
khaleesi
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 12
22.05.2014, 00:03  [ТС] #3
Цитата Сообщение от kasan Посмотреть сообщение
вам в раздел C++
а если не обращать внимания на bool и cout?

Добавлено через 2 минуты
Вот так работает, но мне кажется, что можно поумнее как-то)
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
int main()
{
    srand(time_t(NULL)); 
    int N = 8; 
    int **Population = new int*[N];
    for (int i = 0; i<N; i++) Population[i] = new int[N];
    int q = 0;
    bool flag;
    for (int i = 0; i < N; i++) {
           q = rand() % N + 1;
           flag = 1;
       if (Population[i][0] == q)
        bCheck = 0;
       if (flag)
        Population[i][0] = q;
       else i--;
        for (int j = 0; j < N; j++) {
            q = rand() % N;
            flag = 1;
            for (int b = 0; b < j; b++) {
 
                if (Population[b][i] == q)
                    flag = 0;
                if (flag)
                    Population[j][i] = q;
                else j--;
            }
        }
    }
 
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            cout << Population[i][j] << ' ';
        }
        cout << "\n";
    }
       for (int i = 0; i<N; i++) delete[]Population[i]; 
       delete[]Population;
       return 0;
}
0
ValeryS
Модератор
7166 / 5433 / 674
Регистрация: 14.02.2011
Сообщений: 18,351
22.05.2014, 00:13 #4
Цитата Сообщение от khaleesi Посмотреть сообщение
И самое главное, чтобы они не повторялись.
Не повторялись вообще в строке? или чтобы рядом не стояли?
например размер строки 16
будут стоять числа 1-8 восемь мест, а еще в восьми что?
0
khaleesi
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 12
22.05.2014, 00:16  [ТС] #5
Цитата Сообщение от ValeryS Посмотреть сообщение
Не повторялись вообще в строке? или чтобы рядом не стояли?
например размер строки 16
будут стоять числа 1-8 восемь мест, а еще в восьми что?
Забыла сказать, что здесь фиксированный размер строки - 8
0
ValeryS
Модератор
7166 / 5433 / 674
Регистрация: 14.02.2011
Сообщений: 18,351
22.05.2014, 00:30 #6
Лучший ответ Сообщение было отмечено khaleesi как решение

Решение

Цитата Сообщение от khaleesi Посмотреть сообщение
Забыла сказать, что здесь фиксированный размер строки - 8
а это тогда что?
Цитата Сообщение от khaleesi Посмотреть сообщение
for (int i = 0; i < N; i++)
предлагаю воспользоваться вспомогательным массивом
итак размер 8х8
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int arrTmp[8]={0};
for(int i=0;k=1; i<8;i++,k++)
 {
   for(j=0;j<8;j++)
    {
     int tmp;
      do{
        tmp=rand()%8;
         } while(arrTmp[tmp]==k);
            arrTmp[tmp]=k;
        Population[i][j]=tmp+1;
    
    }     
}
в массив заносим нули
потом генерим число если его не было то в массиве будет номер предыдущего прохода ( при первом проходе 0)
давай говорить о первом проходе, при других аналогично но цифры другие будут

итак проверяем 0 значит числа не было заносим в arrTmp 1 и заносим сгенеренное число в массив Population
если 1 то такое число было генерим еще раз и так до тех пор пока не выпадет число которого не было
за это отвечает вот этот цикл

C
1
2
3
do{
         tmp=rand()%8;
           } while(arrTmp[tmp]==k);
1
khaleesi
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 12
22.05.2014, 00:41  [ТС] #7
Цитата Сообщение от ValeryS Посмотреть сообщение
а это тогда что?
в спешке не исправила. вот) for (int i = 0; i < 8; i++)

спасибо большое, код намного меньше стал и разумнее)
0
22.05.2014, 00:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.05.2014, 00:41

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

Заполнить массив случайным набором чисел от-5 до 10. Как пользоваться Rand?
Необходимо заполнить массив случайным набором чисел от -5 до 10, но проблема в...

Дан массив целых чисел (n=12), заполненный случайным образом числами
Дан массив целых чисел (n=12), заполненный случайным образом числами из...


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

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

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