Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 12
1

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

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

Author24 — интернет-сервис помощи студентам
Всем доброго времени суток! Прошу указать мне на ошибку. Стою на месте, не могу никак сдвинуться. Нужно, чтобы в каждой строке случайным образом были расставлены числа от 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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2014, 22:43
Ответы с готовыми решениями:

Дан массив чисел (n=5), заполненный случайным образом числами из промежутка [-20,50]
Дан массив чисел (n=5), заполненный случайным образом числами из промежутка 1) удалить из него...

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

Дан массив целых чисел (n=10), заполненный случайным образом числами из промежутка [-40,30]
Переставить первые три и последние три элемента местами, сохраняя следование чисел и, не используя...

Дан массив целых чисел (n=25), заполненный случайным образом числами из промежутка [-20,85]
Дан массив целых чисел (n=25), заполненный случайным образом числами из промежутка 1)Удалить из...

6
Чорумфанин
346 / 346 / 320
Регистрация: 06.03.2014
Сообщений: 899
21.05.2014, 23:57 2
вам в раздел C++
0
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
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
22.05.2014, 00:13 4
Цитата Сообщение от khaleesi Посмотреть сообщение
И самое главное, чтобы они не повторялись.
Не повторялись вообще в строке? или чтобы рядом не стояли?
например размер строки 16
будут стоять числа 1-8 восемь мест, а еще в восьми что?
0
0 / 0 / 1
Регистрация: 23.03.2014
Сообщений: 12
22.05.2014, 00:16  [ТС] 5
Цитата Сообщение от ValeryS Посмотреть сообщение
Не повторялись вообще в строке? или чтобы рядом не стояли?
например размер строки 16
будут стоять числа 1-8 восемь мест, а еще в восьми что?
Забыла сказать, что здесь фиксированный размер строки - 8
0
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,523
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
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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2014, 00:41
Помогаю со студенческими работами здесь

Дан массив целых чисел (n=25), заполненный случайным образом числами из промежутка [-50,50]
Помогите пожалуйста написать программу на C#. Спасибо заранее) Дан массив целых чисел (n=25),...

Дан массив целых чисел (N=15), заполненный случайным образом числами из промежутка [-25, 31].
помогите пожалуйста написать программу: Дан массив целых чисел (N=15), заполненный случайным...

Дан массив целых чисел из 25 элементов, заполненный случайным образом числами из промежутка [-35,75]:
(пожалуйста с процедурами и функциями) Дан массив целых чисел из 25 элементов, заполненный...

Дан массив целых чисел из n элементов, заполненный случайным образом числами из промежутка [-35,75]. Удалить и
Что не так? Подскажите пожалуйста var Form2: TForm2; N: integer; M : array of integer; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru