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

Генератор случайных букв

28.06.2015, 21:27. Показов 12766. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. ВОзник вопрос как сделать, чтобы рандомно вывелись 16 символов русского алфавита и они не повторялись. ПОДСКАЖИТЕ ПОЖАЛУЙСТ КА МОЖНО ЭТО РЕАЛИЗОВАТЬ.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.06.2015, 21:27
Ответы с готовыми решениями:

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

Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими
Дана строка с набором случайных символов, при вводе 10 букв первые 5 букв становятся большими , вторые 5 букв маленькими .Если непонятно то...

Генератор случайных текстов
Здравствуйте! Помогите пожалуйста выполнить лабу. Надо создать в C++ генератор случайных чисел, а я совсем в этом не разбираюсь. Буду...

10
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
28.06.2015, 21:44
Генерация массива целых случайных чисел, которые не повторяются
0
0 / 0 / 0
Регистрация: 23.11.2014
Сообщений: 260
Записей в блоге: 1
28.06.2015, 22:17  [ТС]
Байт, Это всё хорошо и полезно,но как быть с БУКВАМИ?
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
28.06.2015, 22:27
Цитата Сообщение от Non_stop Посмотреть сообщение
как быть с БУКВАМИ?
Перенумеруй
0
28.06.2015, 22:29

Не по теме:

Non_stop, для компьютера "букв" не существует, всё есть число.

0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
28.06.2015, 22:35
Цитата Сообщение от Cra3y Посмотреть сообщение
для компьютера "букв" не существует, всё есть число.
Это так. Но однако, представление букв числами на конкретном компьютере, в конкретной кодировке может быть скрыто (или не понято). Потому под
Цитата Сообщение от Байт Посмотреть сообщение
Перенумеруй
я имею в виду просто написание строки из букв, каждая из которых стоит на определенном месте, а вот это место уже - просто число.
Надо пояснять? (для ТС)
строка "АЯБЫ" буква А имеет номер 0, буква Я - 1, Б - 2, Ы - 3
1
 Аватар для iRomul
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
28.06.2015, 23:04
Похоже на правду:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <stdio.h>
#include <time.h>
#include <locale.h>
#include <stdlib.h>
 
int rand_range( int range_min, int range_max ) {
 
    if ( range_min>range_max ) {
        return 0;
    }
     
    return range_min+rand()%(range_max-range_min+1);
    
}
 
int main() {
    
    srand( time( NULL ) );
    
    setlocale(LC_ALL, "russian");
    
    char letters[16];
    int size = sizeof(letters);
    int part_size = 33 / 16; /* 33 - количество букв в алфавите */
    
    /* Генерация блоков */
    for( int i = 0; i < size; i++ ) {
    
        int low = 'а' + i*part_size;
        letters[i] = rand_range(low, low + part_size - 1);
    
    }
    
    /* Перемешиваем */
    for( int i = 0; i < size; i++ ) {
    
        int low = rand_range(0, size - 1);
        int high = rand_range(0, size - 1);
        
        char tmp;
        tmp = letters[low];
        letters[low] = letters[high];
        letters[high] = tmp;
    
    }
    
    /* Пишем символы в stdout */
    for( int i = 0; i < size; i++ ) {
        
        printf("%c ", letters[i]);
    
    }
    
    printf("\n");
    
    return 0;
    
}
Примеры вывода:
Bash
1
2
3
4
5
н в ъ ч к с е о т х ш з ь й я а
б в х е м л о и щ р т ы ж ч ь ю
ы м б ж ь е ч р т ф п г ш й к ю
ы м б ж ь е ч р т ф п г ш й к ю
т е с з г ш о к ч н ю а й ы ф ь
1
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
28.06.2015, 23:15
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 <random>
#include <string>
#include <stdexcept>
#include <exception>
#include <locale>
 
using string = std::wstring;
 
string generate(string in, size_t cnt) {
    string result;
    std::random_device random;
 
    if (cnt > in.size())
        throw std::out_of_range("cnt > in.size()");
    result.reserve(cnt);
    while (cnt) {
        size_t pos = random() % in.size();
        result.push_back(in[pos]);
        in.erase(pos, 1);
        --cnt;
    }
    return result;
}
 
int main() {
    try {
        std::locale sys("");
        std::locale::global(sys);
        //std::wcout.imbue(sys);
        auto x = generate(L"абвгдеёжз", 5);
        std::wcout << x << std::endl;
    }
    catch(std::exception& e) {
        std::cerr << e.what() << std::endl;
    }
    catch(...) {
        std::cerr << "unknow exception" << std::endl;
    }
    return 0;
}
не пашет под windows (MinGW-g++-4.9.1)
работает под Debian 8(g++-4.9.2)
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
29.06.2015, 01:58
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/////////////////////////////////////////////////////////////////////////////////////////
//как сделать, чтобы рандомно вывелись 16 символов русского алфавита и они не повторялись.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <random>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::set        <char>  T_char_set;
typedef std::string             T_str;
/////////////////////////////////////////////////////////////////////////////////////////
T_str   get_nonrepeating_random_characters_on_segment_in_amount
    (
        char    L,
        char    R,
        size_t  count
    )
{
    std::default_random_engine              generator       ( unsigned(time(0))     );
    std::uniform_int_distribution<char>     distribution    ( L,    R               );
    T_char_set                              char_set;
 
    while   (
                char_set.size()     <   count
            )
    {
        char_set.insert
            (
                distribution( generator )
            );
    }//while
 
    T_str   str     (
                        char_set.begin  (),
                        char_set.end    ()
                    );
 
    std::random_shuffle
        (
            str.begin   (),
            str.end     ()
        );
 
    return  str;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::locale::global     (std::locale(""));
    srand                   (unsigned(time(0)));
 
    for(;;)
    {
        auto    rus_letters_16  =   get_nonrepeating_random_characters_on_segment_in_amount
                                        (
                                            'а',
                                            'я',
                                            16
                                        );
 
        std::cout   <<  std::endl
                    <<  std::endl
                    <<  std::endl
                    <<  std::endl
                    <<  rus_letters_16
                    <<  std::endl;
 
        system("pause");
    }//for
}
0
1373 / 596 / 199
Регистрация: 02.08.2011
Сообщений: 2,886
29.06.2015, 08:31
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
    #include <iostream>
    #include <windows.h>
    #include <algorithm>
    #include <ctime>    //srand
 
   using namespace std;
 
 
    int main(){
       setlocale(LC_ALL,"");
       SetConsoleOutputCP(1251);
       SetConsoleCP(1251);
       srand (unsigned(time(0)));    //чтобы каждый раз разные
 
       string alph;  //Создаем алфавит русского языка
       for (char i='А'; i<='Я'; ++i) alph=alph+i;
       alph+='Ё';
 
 
      random_shuffle(alph.begin(),alph.end());  //перемешиваем алфавит
        alph[16]=0;  //Используем возможности Си строк, выбираем 16 первых символов
       alph=alph.c_str();
       cout<<alph;   
      // cout<<alph[5]; //обращение к конкретному символу
 
    }
0
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
29.06.2015, 08:32
Хотя вот так корректнее будет:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/////////////////////////////////////////////////////////////////////////////////////////
//как сделать, чтобы рандомно вывелись 16 символов русского алфавита и они не повторялись.
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <random>
#include <set>
#include <string>
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::set        <char>  T_char_set;
typedef std::string             T_str;
/////////////////////////////////////////////////////////////////////////////////////////
T_str   get_nonrepeating_random_characters_on_segment_in_amount
    (
        char    L,
        char    R,
        int     count
    )
{
    if( L > R )
    {
        std::swap( L, R );
    }
 
    count   =   std::min    (
                                count,
                                R - L + 1
                            );
 
    std::default_random_engine              generator       ( unsigned(time(0))     );
    std::uniform_int_distribution<char>     distribution    ( L,    R               );
    T_char_set                              char_set;
 
    while   (
                    int (
                            char_set.size()
                        )
 
                <   count
            )
    {
        char_set.insert
            (
                distribution( generator )
            );
    }//while
 
    T_str   str     (
                        char_set.begin  (),
                        char_set.end    ()
                    );
 
    std::random_shuffle
        (
            str.begin   (),
            str.end     ()
        );
 
    return  str;
}
/////////////////////////////////////////////////////////////////////////////////////////
int     main()
{
    std::locale::global     ( std::locale("")       );
    srand                   ( unsigned(time(0))     );
 
    for(;;)
    {
        auto    rus_letters_16  =   get_nonrepeating_random_characters_on_segment_in_amount
                                        (
                                            'а',
                                            'я',
                                            16
                                        );
 
        std::cout   <<  std::endl
                    <<  std::endl
                    <<  std::endl
                    <<  std::endl
                    <<  rus_letters_16
                    <<  std::endl;
 
        system("pause");
    }//for
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
29.06.2015, 08:32
Помогаю со студенческими работами здесь

Генератор случайных имен
Я хочу сделать генератор имен, с учетом частоты их использования, допустим есть файл с именами: 0.0601011381337 Александр ...

Генератор случайных чисел
Добрый вечер! Собственно-то тако задание: необходимо правильно задать параметры для ЛКГ и написать функцию, возвращающую случайные числа,...

Генератор случайных чисел
В общем, нужно составить программу, которая реализует алгоритм генерации случайных чисел. Естественно не используя random. Перерыла массу...

Генератор случайных чисел
Помогите пожалуйста нужно написать программу генератора случайных чисел на с++. Чтобы пользователь сам ввел нужное количество (к примеру...

Генератор случайных чисел
Добрый день!У меня есть код #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;cstring&gt; #include &lt;ctime&gt; char randSym() { ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru