Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Rand() - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание специального браузера http://www.cyberforum.ru/cpp-beginners/thread1139382.html
Добрый день. Занимаюсь программированием года 3. В основном работал в вебе, но не в этом суть. Для моей будущей научной работы нужно создать специфичный браузер для инвалидов по зрению. Будет...
C++ Программа определяющая является ли 2 строка перевёрнутой первой Код C #include<iostream> #include<conio.h> #include<cstring> using namespace std; int main() { http://www.cyberforum.ru/cpp-beginners/thread1139362.html
C++ Построение конечного автомата по регулярной грамматике
G=({S, C, D}, {0, 1}, P, S) P: 1) S→1C | 0D; 2) C→0D | 0S | 1; 3) D→1C | 1S | 0. Нужно выполнить: 1) ввод произвольной формальной грамматики с клавиатуры и проверка ее на принадлежность к...
Русский язык C++
Уже задолбался с попыткой заставить выводить считанные русские строки. Имеем. По идее там должна быть функция CharToOem но она коверкает. А вот функции OemToChar и OemToAnsi нормально...
C++ Двумерный массив, сумма столбца http://www.cyberforum.ru/cpp-beginners/thread1139358.html
В двумерном массиве хранится информация о количестве студентов в той или иной группе каждого курса института с первого по пятый (в первом столбце — информация о группах первого курса, во вто¬ром —...
C++ Даны строка S, символ C и строка S0. Необходимо после каждого вхождения символа C в строку S вставить строку S0 Есть код... string s, s0; char c; cout << "Введите строку s, s0 и символ c: "; getline(cin, s); getline(cin, s0); cin >> c; string::size_type npos; подробнее

Показать сообщение отдельно
0x10
2465 / 1637 / 241
Регистрация: 24.11.2012
Сообщений: 4,040
05.04.2014, 10:03
Грубо говоря, так:
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
#include <algorithm>
#include <iostream>
#include <vector>
 
typedef std::pair<int, int> CellCoordinates;
 
int main()
{
    std::vector<CellCoordinates> cells;
    
    for (int i = 0; i < 3; ++i) {
        for (int j = 0; j < 3; ++j) {
            cells.emplace_back(i, j);
        }
    }
    
    for (int i = 0, size = cells.size(); i < 9; ++i, --size) {
        std::cout << "Cells left: " << size << std::endl;
        
        int index = rand() % (size + 1);
        CellCoordinates cell = cells[index];
        
        std::cout << cell.first << " "
            << cell.second << std::endl;
            
        std::remove(cells.begin(), cells.end(), cell);
    }
    
    return 0;
}
http://ideone.com/EsETYN

Добавлено через 1 минуту
Т.е. отдельно храним массив с ячейками - [0, N]. Выбираем случайную от 0 до N, меняем ее местами с последней, уменьшаем N. Таким образом каждый раз будем выбирать только из свободных.
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru