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

Генератор неповторяющихся семизначных чисел

04.10.2015, 16:00. Показов 4225. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем здравствуйте! Очень нужна Ваша помощь. При написании программы столкнулась с проблемой в рандоме. Нужно, чтобы на экран выводились семизначные неповторяющиеся числа. У меня они все начинаются с 10, а дальше все нормально. Необходимо, чтобы все они были разные.
Задание полностью: Сгенерировать 49 семизначных неповторяющихся чисел (элементов). Вывести их на экран.
Мой код на c++:
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
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <iomanip>
using namespace std;
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "Russian");
    const int n = 49;
    const int t = 74;
    int mas1[n];//массив рандомных чисел
    int mas2[t];//массив хеш-таблицы
    for (int i = 0; i<t; ++i)
        mas2[i] = 0;
    srand(time(0));
    mas1[0] = rand() % 9000001 + 1000000;//ранд
    for (int i = 1; i <= n; ++i)
    {
        mas1[i] = rand() % 9000001 + 1000000;//ранд
        for (int j = 1; j <= i; ++j)
        metka:if (mas1[i] == mas1[i - j])//перебор массива на случай совпадений
        {
            mas1[i] = rand() % 9000001 + 1000000;
            goto metka;
        }
    }
    cout << "Исходный массив:\n" << '\n';
    for (int i = 1; i <= n; ++i)
        cout << i << " " << mas1[i] << '\t';//вывод массива
    _getch();
    return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.10.2015, 16:00
Ответы с готовыми решениями:

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

Массив случайных неповторяющихся чисел
Ребят работал всю ночь и сейчас голова не пашет! объясните в чем проблема private: System::Void button2_Click(System::Object^ sender,...

Сгенерировать 54 пятизначных неповторяющихся чисел
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;conio.h&gt; using namespace std; int main(int argc, char*...

6
 Аватар для awalio
34 / 34 / 36
Регистрация: 22.05.2015
Сообщений: 146
04.10.2015, 22:06
ЭльвираР, Вы упустили приоритеты операций.
C++
1
rand() % 9000001 + 1000000;
Деление по модулю приоритетней, чем сложение.
Просто возьмите в скобки операцию сложения.
C++
1
rand() % (9000001 + 1000000);
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
04.10.2015, 22:51
Цитата Сообщение от awalio Посмотреть сообщение
C++
1
rand() % (9000001 + 1000000);
даст значения от 0 до 10000000
Цитата Сообщение от ЭльвираР Посмотреть сообщение
C++
1
rand() % 9000001 + 1000000;
от 1000000 до 10000000
для семизначных нужно
C++
1
rand() % 9000000 + 1000000;
Добавлено через 4 минуты
А то, что начинаются с 10, так это из-за того, что максимум rand() = 32767
2
 Аватар для awalio
34 / 34 / 36
Регистрация: 22.05.2015
Сообщений: 146
04.10.2015, 23:02
Вот такое решение нашел:

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
41
#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <iomanip>
 
using namespace std;
 
unsigned long long randll()
{
    unsigned long long most = rand(), least = rand();
    return (most << 32ULL) + least;
}
 
int main(int argc, char* argv[])
{
    setlocale(LC_ALL, "Russian");
    const int n = 49;
    const int t = 74;
    int mas1[n];//массив рандомных чисел
    int mas2[t];//массив хеш-таблицы
    for (int i = 0; i<t; ++i)
        mas2[i] = 0;
    srand(time(0));
    mas1[0] = randll() % 9000001 + 1000000;//ранд
    for (int i = 1; i <= n; ++i)
    {
        mas1[i] = randll() % 9000001 + 1000000;//ранд
        for (int j = 1; j <= i; ++j)
        metka:if (mas1[i] == mas1[i - j])//перебор массива на случай совпадений
        {
            mas1[i] = randll() % 9000001 + 1000000;
            goto metka;
        }
    }
    cout << "Исходный массив:\n" << '\n';
    for (int i = 1; i <= n; ++i)
        cout << i << " " << mas1[i] << '\t';//вывод массива
    _getch();
    return 0;
}
1
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
04.10.2015, 23:13
Лучший ответ Сообщение было отмечено ЭльвираР как решение

Решение

ЭльвираР,
и еще, чтобы не выходить за границы массива циклы для mas1 нужно объявлять:
C++
1
for (int i = 0; i < n; i++)
Добавлено через 9 минут
а рандомайзить семизначные можно так:
C++
1
mas1[i] = (double)rand()/(RAND_MAX+1)*(9999999-1000000)+1000000;
1
Эксперт PHP
 Аватар для Kerry_Jr
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
04.10.2015, 23:17
Цитата Сообщение от awalio Посмотреть сообщение
C++
1
2
3
4
5
metka:if (mas1[i] == mas1[i - j])//перебор массива на случай совпадений
{
    mas1[i] = randll() % 9000001 + 1000000;
    goto metka;
}
т.е. классический while не устраивает?
1
0 / 0 / 1
Регистрация: 08.02.2015
Сообщений: 10
06.10.2015, 15:46  [ТС]
Большое спасибо! Теперь правильно получается
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.10.2015, 15:46
Помогаю со студенческими работами здесь

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

компьютер генерирует число из 4 неповторяющихся чисел
Подскажите как с помощью random сгенерировать число из 4 неповторяющихся чисел

Генерация неповторяющихся чисел в квадратной матрице
//ïîëå #include &lt;graphics.h&gt; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;ctime&gt; ...

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

Создать d неповторяющихся рандомных чисел - не могу найти ошибку
Программа должна создавать d не повторяющихся рандомных чисел, от 0 до d-1, которые сохранены в векторе. #include &lt;vector&gt; ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача №1: при указании работ (справочник РаботыПоРемонтуСпецтехники),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru