Страница 1 из 1

Установка случайного элемента двумерного массива

Добавлено: 24 мар 2005, 11:42
qwertyuiop
Си.
Парни и девки, подскажите плиз как мне в двумерный массив размером arr[10][10] вставить случайным образом например знак звёздочку "*",а остальные ячейки будут содержать просто пробелы....
Очень надо,срочно....
Заранее благодарен

Добавлено: 24 мар 2005, 11:49
DeeJayC

Код: Выделить всё


srand( (unsigned)time( NULL ) );
char arr[10][10];

for( int i=0; i < 10; i++ )
   memset( a[i], ' ', 10 );

arr[ rand() * 10.f / RAND_MAX ][ rand() * 10.f / RAND_MAX ] = '*';

Добавлено: 24 мар 2005, 12:01
qwertyuiop
Спасибо!!!
А если количество звёздочек будет варьироваться в зависимости от того сколько пользователь захочет(при вводе в scanf),но чтобы не превышало допустим 5 штук???

Добавлено: 24 мар 2005, 12:12
DeeJayC
А добавить цикл и проверку перед заполнением слабо? ( проверка необходима для
того, чтобы быть увереным в том, что звёздочка не попала ещё раза в ту же ячейку).

Добавлено: 24 мар 2005, 12:18
Romeo
Нужно последнюю строку предоставленного кода выполнить в цикле, причём проверяя, чтобы тот элемент, который мы выставяем, уже не содержал звёздочку.

Код: Выделить всё

srand( (unsigned)time( NULL ) );
char arr[10][10];

for( int i=0; i < 10; i++ )
   memset( a[i], ' ', 10 );

int nStarCount;
cin >> nStarCoutn;

int nStars = 0;
while (nStarCount < nStarCount)
{
      int ri = rand() * 10.f / RAND_MAX;
      int rj = rand() * 10.f / RAND_MAX

      if (arr[ri][rj] == '*')
            continue;

      arr[ri][rj] = '*';
      ++nStars;
}
P.S. Название темы изменено. Господин qwertyuiop, постарайтесь хотя бы частично соблюдать правила, с которыми вы нибы-то согласились, зарегистрировав логин на форуме. Название топика должно быть информативным. Это экономит время людям, которые вам помогают.

Добавлено: 24 мар 2005, 12:35
qwertyuiop
Спасибо! Вот только не понятны две строки
функция memset()
и
cin >> nStarCoutn;

Что они делают?

Добавлено: 24 мар 2005, 12:51
Romeo
memset - функция, которая заполняет память, начиная с адреса, указанного первым параметром, причём заполняет содержимым второго параметра и заполняет столько ячеек памяти, сколько указано в третьем параметре.
cin - обект, который позволяет производить ввод данных из консоли (сокращение console input). cin >> nStarCount обозначает "считать из консоли целое число и поместить его в переменную nStarCount.

Добавлено: 24 мар 2005, 12:59
qwertyuiop
Ясно!!!
Сейчас у меня в голове всё встало на свои места,
Всем спасибо!!!