Раскидать тайлы в рандомном порядке, но так, чтоб позиция XY в цикле ни разу не повторялась. - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Задача такова : нужно раскидать тайлы в рандомном порядке, но так, чтоб позиция XY в цикле ни разу не повторялась. Начал было писать программу...
Листинг программы
  1. u16 rx= random()%20*2;
  2. u16 ry= random()%14*2;
  3. u16 i;
  4. u16 j;
  5. for(i=0;i<10;i++)
  6. {
  7. for(j=0;j<7;j++)
  8. {
  9. if(placed[i][j]==1)
  10. }
  11. }
Но тут надо всё-таки do while \ break использовать. Я очень слаб в этом. Набросайте, пожалуйста, как корректнее будет.

Решение задачи: «Раскидать тайлы в рандомном порядке, но так, чтоб позиция XY в цикле ни разу не повторялась.»

textual
Листинг программы
  1. u16 rx, ry;
  2. do
  3. {
  4.     rx= random()%20*2;
  5.     ry= random()%14*2;    
  6. }
  7. while (placed[rx][ry]);
  8.  
  9. placed[rx][ry] = true;

Объяснение кода листинга программы

  1. Объявляются две переменные типа u16 - rx и ry, которые будут использоваться для хранения координат XY.
  2. Запускается цикл do-while, который будет выполняться до тех пор, пока переменная placed[rx][ry] не станет равной true.
  3. Внутри цикла выбираются случайные значения для переменных rx и ry с помощью функции random()%202 и random()%142 соответственно.
  4. Функция random() генерирует случайное число в диапазоне от 0 до 1 (включительно), а оператор % (остаток от деления) используется для ограничения диапазона значений до 20 и 14 соответственно. Умножение на 2 необходимо для получения значений в диапазоне от 0 до 40 и от 0 до 28 соответственно.
  5. Если выбранные координаты уже заняты (переменная placed[rx][ry] равна true), то цикл продолжается, иначе цикл завершается и переменная placed[rx][ry] устанавливается в true, что означает, что координаты заняты.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.917 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы