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

Как вывести рандомный/случайный/произвольный элемент/индекс массива?

19.12.2019, 13:44. Показов 6902. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть файл input.txt
В нём числа через пробел, 10 шт. примерно. Всё это считывается и записывается в массив A. Нужно вывести рандомный элемент/индекс из массива A.

.. вторая часть программы, просто генерация рандомного числа после введённого диапазона.


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
88
89
90
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream>
#include <cstring>
#include <string>
#include <sstream>
 
using namespace std;
 
int random(int min, int max);
 
int random(int min, int max) //range : [min, max)
{
static bool first = true;
if (first)
{
srand(time(NULL)); //seeding for the first time only!
first = false;
}
return min + rand() % ((max + 1) - min);
}
 
int main()
{
 
 
ofstream fout("output.txt");
 
if (!fout.is_open())
cout << "File output.txt doesn't exist!" << endl;
 
 
ifstream fin("input.txt");
    int N, k;
    int A[1000];
    if (!fin.good())
    {
        cout << "Файл input.txt не найден!" << endl;
    }
    else
    {
        k = 0;
        while (fin >> N)
        {
            A[k++] = N;
        }
        cout << "Искомый массив:" << endl;
        for (int i = 0; i < k; i++)
        {
            cout << A[i] << " ";
        }
    }
    cout << endl;
    cout << A[rand() % 5] << endl; //типа вот тут должен выбирать рандомный элемент массива, но увы не работает..
    
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
int min = 1;
int max;
int res;
 
cout << "enter max: " << endl;
cin >> max;
res = random(min, max);
cout << "result: " << res << endl;
 
fout << "result: " << res << endl;
fout.close();
fin.close();
system("pause");
return 0;
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.12.2019, 13:44
Ответы с готовыми решениями:

Вывести случайный элемент массива
Ребята подскажите пожалуйста как можно с массива случайным образом вывести число или два числа???

Вывести случайный элемент массива со значением 1
Такая штука: нужно вывести рандомный элемент массива, значение которого = 1. Ищу для этого в цикле рандомные значения строки/столбца и...

Как из массива брать случайный его элемент?
как из массива брать случайный его элемент???

7
 Аватар для FFPowerMan
2155 / 1234 / 508
Регистрация: 11.10.2018
Сообщений: 6,233
19.12.2019, 14:03
Цитата Сообщение от 45Stvol Посмотреть сообщение
C++
1
int random(int min, int max);
- а зачем так декларацию писать и сразу же полное описание? Это удалите и оставьте только описание.

Добавлено через 4 минуты
Цитата Сообщение от 45Stvol Посмотреть сообщение
C++
1
srand(time(NULL));
- это обычно пишется в main 1-ой строкой или 2-ой строкой после setlocale.

Добавлено через 2 минуты
Цитата Сообщение от 45Stvol Посмотреть сообщение
C++
1
2
if (!fout.is_open())
cout << "File output.txt doesn't exist!" << endl;
- обчно это вот так пишут, кажися
C++
1
2
3
4
5
if(!fout.is_open())
{
    cout << "File output.txt doesn't exist!\n"
    return -1; //Выход из программы.
}
Добавлено через 2 минуты
Цитата Сообщение от 45Stvol Посмотреть сообщение
C++
1
cout << "Файл input.txt не найден!" << endl;
- возможно тут тоже следующей командой будет выход из программы.

Добавлено через 5 минут
Цитата Сообщение от 45Stvol Посмотреть сообщение
C++
1
ofstream fout("output.txt");
- обычно входной файл первый заводится, потому что нам надо с него прочитать данные. Сделайте все по порядку.
1
0 / 0 / 0
Регистрация: 20.04.2016
Сообщений: 26
19.12.2019, 14:05  [ТС]
"Если чисел в массиве k, то рандомное из всех будет определяться как остаток от деления на k а не на 5, в противном случае ты никогда не получишь элементы по индексам 5 и выше, то есть правильно будет cout << A[rand() % k] << endl;
плюс вначале следует добавить строку srand(time(0)); для сидинга рандомайзера иначе у тебя будут постоянно одни и теже числа выпадать"
Порядок и прочее сделаю в конце, мне всё это ещё в свитч вгонять. Просто писал в онлайн компиляторе, а он иногда сдыхал и по новой писал всё что не успел сохранить, потому беспорядочно.

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
ifstream fin("input.txt");
    int N, k;
    int A[1000];
    if (!fin.good())
    {
        cout << "Файл input.txt не найден!" << endl;
    }
    else
    {
        k = 0;
        while (fin >> N)
        {
            A[k++] = N;
        }
        cout << "Искомый массив:" << endl;
        for (int i = 0; i < k; i++)
        {
            cout << A[i] << " ";
        }
        cout << endl;
        cout << "Result input.txt: " << A[rand() % k] << endl; //вывод на сосноль
        fout << "Result input.txt: " << A[rand() % k] << endl; //ввод в файл
    }
 
    cout << endl;
0
 Аватар для FFPowerMan
2155 / 1234 / 508
Регистрация: 11.10.2018
Сообщений: 6,233
19.12.2019, 14:08
Цитата Сообщение от 45Stvol Посмотреть сообщение
C++
1
while(fin >> N)
- начинающий не пишет такие сложные конструкции. Надо сначала отдельно(выше) прочитать число из файла, возможно его дебаггером еще придется смотреть потом. И потом уже будете проверять что считалось в while. Обычно так пишут
C++
1
2
3
4
while(!fin.eof)
{
 
}
Добавлено через 1 минуту
Или со скобками там eof - не помню уже.
1
0 / 0 / 0
Регистрация: 20.04.2016
Сообщений: 26
19.12.2019, 14:13  [ТС]
Цитата Сообщение от FFPowerMan Посмотреть сообщение
начинающий не пишет такие сложные конструкции

Не по теме:

Меня хвалят?



Всё понял
0
63 / 46 / 11
Регистрация: 27.12.2017
Сообщений: 1,484
19.12.2019, 14:14
FFPowerMan,
Цитата Сообщение от FFPowerMan Посмотреть сообщение
обчно это вот так пишут, кажися
у него программа состоит из 2х частей,зачем ему выход из main если есть еще 2я независимая часть?

Добавлено через 47 секунд
Цитата Сообщение от FFPowerMan Посмотреть сообщение
!fin.eof
fin.eof() - это вызов функции
1
 Аватар для zayats80888
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
19.12.2019, 14:20
Цитата Сообщение от FFPowerMan Посмотреть сообщение
while(!fin.eof)
Ну и зачем такое советовать? А если failbit или badbit флаг установится?
2
 Аватар для Новичок
1682 / 1098 / 489
Регистрация: 17.07.2012
Сообщений: 5,360
19.12.2019, 14:37
Цитата Сообщение от FFPowerMan Посмотреть сообщение
Обычно так пишут
Обычно так не пишут ) Это известные грабли. https://isocpp.org/wiki/faq/in... am-and-eof
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.12.2019, 14:37
Помогаю со студенческими работами здесь

Вывести на экран наибольший элемент массива и его индекс
Нужно вывести наибольший элемент и его порядковый номер для каждого числа. Пожалуйста не нужно предлагать свои решения. Мне нужно знать...

Надо взять рандомный элемент массива
#include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; using namespace std; int main() { ...

Поменять в матрице случайный элемент в первой строке и случайный элемент в последней строке
Пользователь вводит массив 3 строки 4 столбца. Программа меняет местами случайный элемент в первой строке и случайный элемент в последней...

Как узнать индекс элемента массива, зная итератор на этот элемент?
Вот пример: #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;algorithm&gt; size_t get_index ( const...

Поменять местами наибольший и наименьший элемент массива в диапазоне от 0 до 25. Массив рандомный
#include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;cstdlib&gt; #include &lt;time.h&gt; using namespace std; int main() { int min, max,...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru