Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 06.09.2014
Сообщений: 38
1

Заполнение элементов вектора рандомными числами без повторений

31.10.2014, 16:43. Просмотров 2428. Ответов 4
Метки нет (Все метки)

Требуется заполнить 15 элементов вектора числами с 1 до 15, а последний элемент нулем
Главное, чтобы числа не повторялись и все это происходило рандомно
Я написала функцию void genetation, но она почему-то не идет и вектор остается нулевым, помогите пожалуйста

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 "stdafx.h"
#include <iostream>
#include <math.h>
#include <vector>
using namespace std;
 
class vect{
protected: vector <int> myVector;
public:
    vect () {};
    void genetation(){
        int g = 0;
        int c[15];
        bool k = false;
        for (int k = 0; k < 15; k++){
            c[k] = 0;
        }
        for(int i = 0; i < 15; i++){
            k = false;
            while (!k){
                k = true;
                int g = rand()%16 - 1;
                for(int j = 0; j < i; j++){
                    if (g = c[j])
                        k = false;
                }
            }
            c[i] = g;
            myVector.push_back(g);
        }
        myVector.push_back(0);
    }
 
    void output(){
        for (int i = 0; i < 4; i++){
            cout << myVector[i] << " ";
        }
        cout << endl;
        for (int i = 4; i < 8; i++){
            cout << myVector[i] << " ";
        }
        cout << endl;
        for (int i = 8; i < 12; i++){
            cout << myVector[i] << " ";
        }
        cout << endl;
        for (int i = 12; i < 16; i++){
            cout << myVector[i] << " ";
        }
    }
};
int main(){
    vect pole;
    pole.genetation();
    pole.output();
    system("pause");
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.10.2014, 16:43
Ответы с готовыми решениями:

Заполнение массива рандомными числами без повторений
Здравствуйте! Пытаюсь заполнить массив рандомными числами без повторений, в коде есть проверка на...

Заполнение массива числами от 1 до 25 без повторений
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main() { const int ROW=5; ...

Заполнение массива рандомными числами
Здравствуйте! Нужно заполнить массив float рандомными числами от 0.3 до 0.9 #define MIN 0.3...

Заполнение двумерного массива рандомными числами
Здравствуйте! Стоит задача заполнить двумерный массив случайными значениями, для этого я...

4
Модератор
Эксперт С++
9927 / 8445 / 5134
Регистрация: 18.12.2011
Сообщений: 22,615
31.10.2014, 17:16 2
Цитата Сообщение от 12712266 Посмотреть сообщение
if (g = c[j])
Это присвоение, надо два ==:
C++
1
if (g == c[j]
1
1 / 1 / 0
Регистрация: 06.09.2014
Сообщений: 38
31.10.2014, 18:07  [ТС] 3
Спасибо, но все равно код не работает
0
47 / 28 / 12
Регистрация: 23.01.2013
Сообщений: 125
31.10.2014, 18:18 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <vector>
#include <algorithm>
//
using namespace std;
//
int main(int argc, char **argv)
{
    vector<int> v;
 
    for(int i = 1; i <= 14; i++)
    {
        v.push_back(i);
    }
    v.push_back(0);
    random_shuffle(v.begin(), v.end());
 
    return 0;
}
srand ток добавь чтобы разные числа получать
0
4017 / 2182 / 368
Регистрация: 05.10.2013
Сообщений: 6,203
Записей в блоге: 172
31.10.2014, 19:07 5
Цитата Сообщение от greenlight Посмотреть сообщение
v.push_back(0);
* * random_shuffle(v.begin(), v.end());
Только эти строчки нужно местами поменять, так как:
C++
1
Требуется заполнить 15 элементов вектора числами с 1 до 15, а последний элемент нулем
Поясню автору темы, что вот эта строчка:
C++
1
random_shuffle(v.begin(), v.end());
Перемешивает содержимое вектора

Вот маленький примерчик:
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 <vector>
#include <algorithm>
#include <iterator>
 
int main()
{
    // Вектор хранит значения: 1, 2, 3, 4, 5
    std::vector<int> v = { 1, 2, 3, 4, 5 };
 
    // Перемешиваем:
    std::random_shuffle( v.begin(), v.end() );
 
    // У меня на экран вывелось: 5 2 4 3 1
    for ( auto it = v.begin(); it != v.end(); it++ ) {
        std::cout << *it << " ";
    }
    std::cout << std::endl;
 
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.10.2014, 19:07

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Заполнение списка рандомными целыми числами
Доброго времени суток! Мне необходимо создать циклический одномерный список и заполнить его...

Заполнение вектора случайными числами
как с помощью функции rand() заполнить вектор случайными числами из промежутка, причем границы...

Заполнение вектора случайными числами
Как сделать сортировку? Желательно подробно. И почему рандомные числа одни и те же? #include...

Написать программу которая бы заполняла одномерный массив (в 40 элементов) рандомными числами.
Всем доброго времени суток. Задание у меня следующее: Нужно написать программу которая бы заполняла...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.