Страница 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
Ясно!!!
Сейчас у меня в голове всё встало на свои места,
Всем спасибо!!!