Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2010, 20:42   #1
hunter03
Форумчанин
 
Регистрация: 05.05.2009
Сообщений: 244
По умолчанию закрашивание клеток в сетке, графика паскаль

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

Код:
bb := 45;
kl := 1; {num количество закрашиваемых клеток}
while kl <= num do begin
 metka:
  x1 := (random(469) + 1);
  y1 := (random(470)); {opredelyaem koordinatu kracnix kletok}
  if (y1 <= 35) or (y1 mod 2 = 0) or (x1 mod 2 = 0) then goto metka;
  mas1[kl] := x1; mas2[kl] := y1;
  setfillstyle(1, 4);
  floodfill(x1, y1, 15);
  setcolor(4);
  str(x1, s); str(y1, s1);
  outtextxy(470, bb, s);
  outtextxy(530, bb, s1);
  bb := bb + 15;
  kl := kl + 1;
end;
Заранее спасибо за помощь


_____
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.11.2010 в 22:48.
hunter03 вне форума Ответить с цитированием
Старый 30.11.2010, 22:54   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Задача как стоит? Закрасить СТРОГО N клеток?
я бы завёл массивчик, где сохранял информацию о закрашенных клетках, ну и гонял бы рандом в цикле, пока количество закрашенных клеток не стало равным N
(разумеется, если рандом выпал уже на закрашенную клетку, счётчик закрашенных не увеличивать!)

p.s. старайтесь не использовать метки и переход goto на них.
это всегда можно заменить.
в данном случае, например, так:
Код:
while kl <= num do begin
 repeat
    x1 := (random(469) + 1);
    y1 := (random(470)); {opredelyaem koordinatu kracnix kletok}
 until not ( (y1 <= 35) or (y1 mod 2 = 0) or (x1 mod 2 = 0) );
....
ВНИМАНИЕ! Логику вашего кода абсолютно не смотрел! Просто переписал Ваш код, чтобы он выполнялся ТОЧНО ТАК ЖЕ, как и ваш с меткой, только БЕЗ использования метки и перехода.
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
паскаль. графика vykker Помощь студентам 2 28.06.2010 18:25
Закрашивание SlaYeR_DD Помощь студентам 2 10.06.2010 12:43
Паскаль. Графика uropb992 Помощь студентам 2 09.06.2010 19:28