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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.09.2011, 15:14   #1
-=Mafia=-
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 18
По умолчанию Как заполнить stringgrid по принципу лото?

Вопрос в заголовке
-=Mafia=- вне форума Ответить с цитированием
Старый 29.09.2011, 15:18   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

а что такое принцип лото?
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 29.09.2011, 15:48   #3
-=Mafia=-
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 18
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
а что такое принцип лото?
Билет с ячейками 3х9 в котором должны быть 15 случайных, не повторяющихся чисел в диапазоне от 1 до 90. В первом столбце числа от 1 до 9, во втором 10 до 19 и т.д.
-=Mafia=- вне форума Ответить с цитированием
Старый 29.09.2011, 16:19   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
должны быть 15 случайных, не повторяющихся чисел в диапазоне от 1 до 90.
Код:
randomize;
for j:=1 to 90 do m[j]:=j;// заполняем числами по порядку
for j:=1 to 15 do begin // перемешиваем 
  k:=ramdom(90);
  t:=m[j]; m[j]:=m[k]; m[k]:=t;
end;
for j:=1 to 15 do begin//берем первые 15 из перемешанного
  if m[j]<10 then ......... // и расставляем
end;
это не совсем равновероятное. (см. темы тасование карт).

Цитата:
В первом столбце числа от 1 до 9
Код:
if m[j] <10 then begin line[1,k2]:=m[j]; k1:=k1+1; end
else if m[j]<20 then begin line[2,k2]:=m[j]; k2:=k2+1; end
else ..................;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 29.09.2011 в 16:43.
evg_m вне форума Ответить с цитированием
Старый 29.09.2011, 20:05   #5
-=Mafia=-
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 18
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Код:
randomize;
for j:=1 to 90 do m[j]:=j;// заполняем числами по порядку
for j:=1 to 15 do begin // перемешиваем 
  k:=ramdom(90);
  t:=m[j]; m[j]:=m[k]; m[k]:=t;
end;
for j:=1 to 15 do begin//берем первые 15 из перемешанного
  if m[j]<10 then ......... // и расставляем
end;
это не совсем равновероятное. (см. темы тасование карт).


Код:
if m[j] <10 then begin line[1,k2]:=m[j]; k1:=k1+1; end
else if m[j]<20 then begin line[2,k2]:=m[j]; k2:=k2+1; end
else ..................;
Можно подробнее? Что то я не понял как это делается.
-=Mafia=- вне форума Ответить с цитированием
Старый 30.09.2011, 09:33   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

берем массив на 90 элементов.
Код:
var m: array[1..90] of integer;
1.заполняем числами 1..90 по порядку (неповторяющиеся от 1 до 90).

2.перемешиваем элементы массива (эти числа) (в случайном порядке).
random(90) функция получения случайного числа в диапазоне 1..90

3.берем первые 15 элементов перемешанного массива.
(это будут наши 15 случайных неповторяющихся чисел от 1 до 90)
и расставляем в соответствии с требованиями.

Это алгоритм работы. код написан выше. что именно не понятно.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 30.09.2011 в 09:40.
evg_m вне форума Ответить с цитированием
Старый 30.09.2011, 13:05   #7
-=Mafia=-
Пользователь
 
Регистрация: 19.05.2011
Сообщений: 18
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
берем массив на 90 элементов.
Код:
var m: array[1..90] of integer;
1.заполняем числами 1..90 по порядку (неповторяющиеся от 1 до 90).

2.перемешиваем элементы массива (эти числа) (в случайном порядке).
random(90) функция получения случайного числа в диапазоне 1..90

3.берем первые 15 элементов перемешанного массива.
(это будут наши 15 случайных неповторяющихся чисел от 1 до 90)
и расставляем в соответствии с требованиями.

Это алгоритм работы. код написан выше. что именно не понятно.
Не понятно как эти числа попадают в stringgrid
-=Mafia=- вне форума Ответить с цитированием
Старый 30.09.2011, 13:31   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Не понятно как эти числа попадают в stringgrid
а они туда пока и не попали.
надо дописать
Код:
if m[j]<10 then //что-то сделать чтобы попало в первый столбец
else if m[j]<20 then //во  второй 
//ну и так далее.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как заполнить StringGrid русским алфавитом рандомно без повтора буквы LatuSerge Помощь студентам 2 18.04.2011 15:45
Заполнить StringGrid из дерева artemavd Общие вопросы Delphi 14 11.09.2010 19:20
как заполнить StringGrid (Delphi) kaa1977 Помощь студентам 1 13.11.2009 08:40
Как заполнить StringGrid???? Anna_new Помощь студентам 15 19.04.2008 00:34
Как заполнить StringGrid "стрелочкой" ? mEka Компоненты Delphi 1 16.12.2006 20:15