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

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

13.06.2012, 13:58. Показов 12029. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 30.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru