Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 06.06.2018
Сообщений: 45

Заполнить рандомно массив без повторений от 0 до 16

21.10.2019, 09:58. Показов 2552. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как заполнить рандомно масив без повторений от 0 к 16?
Либо перемешать уже готовый масив заполненый от 0 к 16 по порядку.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.10.2019, 09:58
Ответы с готовыми решениями:

Рандомно сгенерировать из N вопросов K штук без повторений
Написать программу. которая рандомно генерирует из N вопросов K штук (например. из 20 берется 10)....

Как заполнить массив из 4 чисел числами от 1 до 4 без повторений
Как мне заполнить массив при помощи рандома? Чтобы на выходе у меня были комбинации примерно...

1)Оператор повторений while, 2)Оператор повторений do-while
Составить блок-схему алгоритма и программу вычисления выражения для заданных натурального числа n...

9
фрилансер
 Аватар для Алексей1153
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
21.10.2019, 10:15
soratik, массив

Заполняешь последовательно от начала до конца значением индекса элемента. Затем std::shuffle
0
0 / 0 / 0
Регистрация: 06.06.2018
Сообщений: 45
21.10.2019, 10:32  [ТС]
Можете написать пример функции shuffle?
Пробовал random_shuffle, но вместо перетасовки получился полнейший бред
Вот код
C++
1
2
3
4
5
6
7
for(i=0;i<16;i++)
{
      mas[i] = i++;
     int  SIZE = sizeof(mas) / sizeof(*mas);
      std::random_shuffle(mas, mas + SIZE ); }
 
for (index = 0;index < 16; index++)  Buttons[index]->Caption=(AnsiString)mas[index];
0
фрилансер
 Аватар для Алексей1153
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
21.10.2019, 10:39
soratik, в чём именно заключается бред ?

mas - как объявлен массив ?
0
0 / 0 / 0
Регистрация: 06.06.2018
Сообщений: 45
21.10.2019, 10:41  [ТС]
C++
1
int index,i,j,mas[16];
Бред заключается в этом
0
фрилансер
 Аватар для Алексей1153
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
21.10.2019, 10:43
soratik, ну блин, полный код приведи, чего кусками то скидываешь. Инициализацию не вижу
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
21.10.2019, 10:46
Цитата Сообщение от soratik Посмотреть сообщение
Можете написать пример функции shuffle?
Пробовал random_shuffle, но вместо перетасовки получился полнейший бред
C++
1
std::random_shuffle(std::begin(mas), std::end(mas));
Добавлено через 1 минуту
C++
1
2
3
4
for(i=0;i<16;i++)
      mas[i] = i;
 
std::random_shuffle(std::begin(mas), std::end(mas));
0
фрилансер
 Аватар для Алексей1153
6454 / 5655 / 1129
Регистрация: 11.10.2019
Сообщений: 15,054
21.10.2019, 10:50
Лучший ответ Сообщение было отмечено soratik как решение

Решение

soratik,

вот я попробовал, вполне себе перемешивает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
 
int main()
{
    int mas[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
    int len=sizeof(mas)/sizeof(*mas);
 
    for(int i=0;i<len;i++)
    {
        std::cout<<mas[i]<<",";
    }
    std::cout<<std::endl;
    
    std::random_shuffle(mas,mas+len);
    
    for(int i=0;i<len;i++)
    {
        std::cout<<mas[i]<<",";
    }
}
0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
4,10,11,15,14,5,13,1,6,9,3,7,8,2,0,12,
1
0 / 0 / 0
Регистрация: 06.06.2018
Сообщений: 45
21.10.2019, 10:54  [ТС]
[C++ Error] Unit1.cpp(66): E2316 'begin' is not a member of 'std'
[C++ Error] Unit1.cpp(66): E2316 'end' is not a member of 'std'
[C++ Error] Unit1.cpp(66): E2285 Could not find a match for '_STL::random_shuffle<_RandomAccessIter, _RandomNumberGenerator>(undefined,undefi ned)'

Добавлено через 2 минуты
Весь код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   srand(time(NULL));
typedef TButton* TButtons;
TButtons Buttons[16] = {Button1, Button2, Button3,Button4,Button5,Button6,Button7,Button8,Button9,Button10,Button11,Button12,Button13,Button14,Button15,Button16};
int index,i,j,mas[16];
 
for(i=0;i<16;i++)  {
      mas[i] = i;
          }
         int  SIZE = sizeof(mas) / sizeof(*mas);
        std::random_shuffle(mas, mas + SIZE);
                for (index = 0;index < 16; index++)
                        Buttons[index]->Caption=(AnsiString)mas[index];
0
Модератор
 Аватар для D1973
9917 / 6454 / 2455
Регистрация: 21.01.2014
Сообщений: 27,389
Записей в блоге: 3
21.10.2019, 17:26
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <vector>
#include <algorithm>
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   std::randomize(); //Включаем ГСЧ
   std::vector<TButton*> B; //Объявляем вектор кнопок
   std::vector<int> Num; //Объявляем вектор номеров
//Заполняем вектор кнопок
//все кнопки, которые должны попасть в вектор, должны иметь свойство Tag = 1
   for(int i = 0; i < ControlCount; i++)
     if(Controls[i]->ClassNameIs("TButton"))
       if(((TButton *)Controls[i])->Tag == 1)
         B.push_back((TButton *)Controls[i]);
//Заполняем вектор номеров
   for(int i = 0; i < 16; i++)
     Num.push_back(i);
//Перемешиваем векор номеров
   std::random_shuffle(Num.begin(), Num.end());
//Сопоставляем перемешанный вектор номеров и вектор кнопок
   for(unsigned int i = 0; i < Num.size(); i++)
     B[i]->Caption = IntToStr(Num[i]);
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.10.2019, 17:26
Помогаю со студенческими работами здесь

Группа повторений двух значений в случайном порядке, где кол-ва повторений разных значений относятся как 2:1
Задание: Заполнить двухмерный массив 8х8 значениями 0 и 1 случайным образом, но так, чтобы нулей...

Каждое 3-е повторение гласной и каждое 8-е повторение согласной буквы кириллицы составляют буквы скрытого сообщения
Написать программу, которая бы могла расшифровать такое скрытое сообщение. Вводиться строка по...

Операторы повторения. Циклические алгоритмы Объявить массив целых чисел из 1000 элементов. Заполнить случайными числами
Операторы повторения. Циклические алгоритмы Объявить массив целых чисел из 1000 элементов....

Заполнение элементов вектора рандомными числами без повторений
Требуется заполнить 15 элементов вектора числами с 1 до 15, а последний элемент нулем Главное,...

Выбрать из базы десять рандомных имен без повторений
Всем привет) Как сделать программу, которая выдаёт любые 3 имени рандомом из 10, без повторений?...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru