Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.51/55: Рейтинг темы: голосов - 55, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 8

Массив случайных неповторяющихся чисел

13.06.2012, 13:58. Показов 11922. Ответов 34
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят работал всю ночь и сейчас голова не пашет! объясните в чем проблема
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) 
{
                                  n: int a = rand()%20+1;
   {
            for (int j=1; j<10; j++)
            {
                if (mase[j] == a)
                {
                    goto n;
                }
            }
            mase[post]=a;
            cout <<mase[post]<< endl;
                                  post++;
}
post и mase[] - глобальные перменные
и как бы я не страрался все время числа повторяются
по логике вроде все правильно
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.06.2012, 13:58
Ответы с готовыми решениями:

Генератор случайных неповторяющихся чисел
Народ помогите! Проблема следующая. Я создал массив и заполнил его числами с помощью rand от -20 до 20. Как сделать так, чтобы при выводе...

Матрица из случайных неповторяющихся чисел
Здравствуйте! В C++ я новичок (что по-моему и так понятно, иначе этого вопроса бы не было :D). Скажите, пожалуйста, как составить матрицу...

Составить функцию, которая возвращает N случайных неповторяющихся целых чисел из диапазона
Помогите плизз Составить функцию, которая возвращает N случайных неповторяющихся целых чисел из диапазона . Главная...

34
Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475
13.06.2012, 14:28
А ты написал строчку
C++ (Qt)
1
srand(time(0));
(требует #include <time.h>) - эта штука задает какой параметр для rand (для его корректной работы), точно не скажу
0
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 8
13.06.2012, 14:32  [ТС]
нет, но это все равно не помогает. Ошибка в логике, где-то надо break поставить или что-то такое, но я хз где, поэтому и прошу помощи
0
Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475
13.06.2012, 14:37
А ты просто не можеш поставить
Цитата Сообщение от aletelegov Посмотреть сообщение
int a = rand()%20+1;
в

Цитата Сообщение от aletelegov Посмотреть сообщение
if (mase[j] == a) {
И нафиг убрать goto - а то поему у тя получается почти бесконечный цикл
0
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 8
13.06.2012, 14:41  [ТС]
нет бесконечного цикла нет, ибо условие выхода доситгается после проверки 10 чисел
а переставил и все равно фигня
0
Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475
13.06.2012, 14:46
Цитата Сообщение от aletelegov Посмотреть сообщение
ибо условие выхода доситгается после проверки 10 чисел
Да только после каждого goto у тя начинается for сначала
Попробуй переставить
Цитата Сообщение от aletelegov Посмотреть сообщение
int j=1
перед

Цитата Сообщение от aletelegov Посмотреть сообщение
n: int a = rand()%20+1;
0
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 8
13.06.2012, 14:53  [ТС]
нет все равно
0
Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475
13.06.2012, 15:06
Если я все правильно понял, то вот - все работает норм
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main()
{
 
  int mase[10],post=0,a;
  
   srand(time(0));
            for (int j=0; j<10; j++)
            {
                if (mase[j] == (a = rand()%20+1)){}
 
            }
            mase[post]=a;
            cout <<mase[post]<< endl;
   post++;
  
  system("PAUSE");  
  return 0;
}
1
0 / 0 / 0
Регистрация: 21.05.2012
Сообщений: 8
13.06.2012, 15:17  [ТС]
во то что надо, спс
0
Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475
13.06.2012, 15:23
Ой, сори, я чото ступил, вот
C++ (Qt)
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
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
 
  int mase[10],post=0,a;
  srand(time(0));
  a = rand()%20+1;
   
            for (int j=0; j<10; j++)
            {
                if (mase[j] == a)
                {
                    int a = rand()%20+1;
                }
            }
            mase[post]=a;
            cout <<mase[post]<< endl;
                                  post++;
  
  system("PAUSE");  
  return 0;
}
А то вообще
Цитата Сообщение от cactus09 Посмотреть сообщение
if (mase[j] == (a = rand()%20+1)){}
такой бред
0
24 / 24 / 10
Регистрация: 04.04.2012
Сообщений: 119
13.06.2012, 15:46
Цитата Сообщение от cactus09 Посмотреть сообщение
C++
1
2
3
4
if (mase[j] == a)
{
 int a = rand()%20+1;
}
По моему лучше заменить на:
C++
1
2
3
4
while (mase[j] == a)
{
int a = rand()%20+1;
}
А то могут быть случаи когда 2 раза сгенериться одинаковое число.

И у Вас нерабоет прога.

Добавлено через 15 минут
Хм, интересное задание буду сидеть думать, для своего развития. Напишу скину код
1
Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475
13.06.2012, 15:59
Цитата Сообщение от Aesonet Посмотреть сообщение
И у Вас нерабоет прога.
Почему не работает??? О_о
Миниатюры
Массив случайных неповторяющихся чисел  
0
24 / 24 / 10
Регистрация: 04.04.2012
Сообщений: 119
13.06.2012, 16:08
Ну не так выразился. Она работает, но неправильно. Код должен генерить массив неповторяющихся чисел, а не 1 число
0
Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475
13.06.2012, 16:33
Aesonet, Ну тогда можно так, правда это не спортивно
C++ (Qt)
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
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main(int argc, char *argv[])
{
 
  int mase[10],post=0,a;
  srand(time(0));
  a = rand()%20+1;
   
            for (int j=0; j<10;)
            {
             if( mase[j]!=(a = rand()%20+1) &&
             mase[0]!=a && mase[1]!=a &&
             mase[2]!=a  && mase[3]!=a  && 
             mase[4]!=a && mase[5]!=a  && 
             mase[6]!=a  && mase[7]!=a &&  
             mase[8]!=a  && mase[9]!=a){    
              mase[j]=a;
              j++;}
            }
            
            
            for (int post=0; post<10; post++)
            {
            cout <<mase[post]<< endl;
            }
  
  system("PAUSE");  
  return 0;
}
0
24 / 24 / 10
Регистрация: 04.04.2012
Сообщений: 119
13.06.2012, 16:47
Да неспортивно, при том, а если массив из 1000 ячеек?
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
#include <iostream>
using namespace std;
int main()
{  int mase[10],a,j,x,y=0;
srand(time(NULL));
for (j=0; j<10; j++)
{
mase[j]=rand()%10+1;
}
for (j=0; j<10; j++) cout <<mase[j]<<"   ";
cout<< endl;
for (j=0;j<10;j++)
{x=1;
while (x==1)
{x=0;
for (int i=j;i<10;i++) {if (mase[j]==mase[i])mase[j]=rand()%10+1; x++;}
for (int i=j;i>=0;i--) {if (mase[j]==mase[i])mase[j]=rand()%10+1; x++;}
if (x==2) break;
}}
 
 
cout<< endl;
for (j=0; j<10; j++) cout <<mase[j]<<"   ";  
 
cout<< endl;
system("PAUSE");  
}
Вот над чем я щас думаю, неполучаеться сделать так чтобы сравнивало в циклах массивы хоть убей. Мб поможешь ?
0
Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475
13.06.2012, 17:01
Aesonet, Придумал как зделать, вот
C++ (Qt)
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
#include <iostream>
#include <time.h>
 
using namespace std;
 
int main()
{
  int mass[10];
  bool flag=false;
  srand(time(0));
  
  for(int i=0;i<10;i++){mass[i]=rand()%11;}
  
  while(true){
  flag =true;
   for(int i=0;i<10;i++){
    for(int j=0;j<10;j++){
     if(mass[i]==mass[j] && i!=j){
      mass[i] = rand()%11;
      flag = false;
      }
    }
   }
   if(flag){break;}
  }
  
  for(int i=0;i<10;i++){cout<<mass[i]<<" ";}
  cout<<endl;
  system("PAUSE");  
  return 0;
}
Я молодец
1
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
13.06.2012, 17:16
я бы писал сгенеренное параллельно в "рабочий" std::set, и там проверял, есть уже такое число или нет. зачем циклить?
0
24 / 24 / 10
Регистрация: 04.04.2012
Сообщений: 119
13.06.2012, 17:42
Ну я с класами неоч пока дружу ток изучаю их... Напишите пример кода с std::set.
cactus09
Наверное жара в офисе на меня так плохо действует, не додумался к такому
0
Чайник
 Аватар для cactus09
70 / 70 / 9
Регистрация: 15.02.2012
Сообщений: 475
13.06.2012, 17:45
novi4ok,
Цитата Сообщение от Aesonet Посмотреть сообщение
Ну я с класами неоч пока дружу ток изучаю их... Напишите пример кода с std::set.
Поддерживаю, тож интересно и тож с классами не дружу
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
13.06.2012, 18:34
Цитата Сообщение от cactus09 Посмотреть сообщение
novi4ok,

Поддерживаю, тож интересно и тож с классами не дружу
а зачем пишешь using namespace std;, если не используешь ничего из этого namespace?


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
...
#include <set>
 
#define ARRAY_SIZE 10
#define RANDOM_RANGE 20 // генерируем числа до 20. должно быть больше, чем длина массива.
                                     // желательно в коде где-нибудь проверить, если задается как параметр
 
...
    int mass[ARRAY_SIZE];
    srand(time(0));
    std::set<int> set;
    int index = 0;
    ::memset (mass, 0, sizeof (mass));
    while (set.size() < ARRAY_SIZE){
        int r = rand()%RANDOM_RANGE+1;
        if (set.find(r) == set.end()){
            set.insert (r);
            *(mass+index++) = r;
        }
    }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.06.2012, 18:34
Помогаю со студенческими работами здесь

Сгенерировать массив из N неповторяющихся четных чисел в заданном диапазоне
Создать функцию, которая генерирует массив из N элементов неповторяющихся четными числами в диапазоне K.M

Преобразовать одномерный массив вещественных случайных чисел в массив целых чисел
Преобразовать одномерный массив вещественных случайных чисел в массив целых чисел больших исходных на два порядка. Напечатать массивы в два...

Эксперты! Одномерный массив неповторяющихся чисел не могу понять почему криво работает
Задание: Нужно вывести массив из случайных чисел. Размер массива 8. Случайные числа от 1 до 8. Числа не должны повторяться. #include...

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

Сформировать одномерный массив целых чисел, используя датчик случайных чисел
1) Сформировать одномерный массив целых чисел, используя датчик случайных чи-сел. 2) Распечатать полученный массив. 3) Удалить элементы...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru