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

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

04.10.2015, 16:00. Показов 4099. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru