Пятница, 29 Марта 2024, 09:22

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Программирование » C/C++ » Рандомизация массива!
Рандомизация массива!
tourniquetДата: Суббота, 16 Февраля 2013, 00:08 | Сообщение # 1
частый гость
Сейчас нет на сайте
Вечер добрый!
Есть массив
Код
int someArray[9] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

И есть вопрос - как можно перемешать эти числа в массиве? smile


Сообщение отредактировал tourniquet - Суббота, 16 Февраля 2013, 00:10
Desert_HunterДата: Суббота, 16 Февраля 2013, 01:13 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Код
int main()
{
const int n = 10;
int a[n];
srand(time(NULL));
cout << "Массив: ";
for (int i=1;i<n;i++)
{
a[i]=rand()%(0+10);
cout << a[i] << " ";
}
}


Сообщение отредактировал Desert_Hunter - Суббота, 16 Февраля 2013, 01:13
froexДата: Суббота, 16 Февраля 2013, 01:54 | Сообщение # 3
Руководитель Froexilize team
Сейчас нет на сайте
tourniquet, std::random_shuffle()

Desert_Hunter,
Цитата (Desert_Hunter)
for (int i=1;i<n;i++)

Не все элементы переберутся.


Не превращайте форум в чат. Пишите более развернуто и понятно - всё равно вас попросят объяснить подробнее.
Алгоритмы, программирование, оптимизация, тестирование, ведение проектов.
Ищу художника, дизайнера, тестера, программистов С и С++
Обучаю процессам разработки и программированию.


Сообщение отредактировал froex - Суббота, 16 Февраля 2013, 01:55
tourniquetДата: Понедельник, 18 Февраля 2013, 12:53 | Сообщение # 4
частый гость
Сейчас нет на сайте
Спасибо! Я забыл написть что я пишу на Си, но всё равно спасибо, я нашёл решение smile

Код
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int shuffleArray() {

  int someArray[9];
  int i, j, temp;

  srand(time(NULL));

  for(i = 0; i < 9; i++ ) {
   someArray[i] = i + 1;
  }

  for(i = 0; i < 9; i++)
   printf(" %d", someArray[i]);

  for(i = 0; i < 9; i++) {
   j = (rand() % 9) + 1;

   temp = someArray[i];
   someArray[i] = someArray[j];
   someArray[j] = temp;
  }

  printf("\n------------------------------------------\n");

  for(i = 0; i < 9; i++)
   printf(" %d", someArray[i]);

  printf("\n");
   
  return 0;

}
nonameДата: Четверг, 14 Марта 2013, 16:39 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
tourniquet, ты последовательно меняешь значение каждого элемента массива с любым другим элементом.

а я бы последовательно менял значение каждого элемента массива, кроме последнего, с любым другим элементом, кроме тех, чей индекс меньше.

смысл в следующем:
1. в первую ячейку массива заносим любое из хранимых значений. и всё- от этой ячейки мы добились всего, что нам нужно, так давайте не будем больше её трогать.
2. и так же поступаем с оставшейся частью лабиринта(без выбывшей ячейки).
3. и, да- если у нас осталась одна ячейка, то не трогаем её- смысла нет.


все правила форумной игры Дуэль Программистов
Форум игроделов » Программирование » C/C++ » Рандомизация массива!
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг