Помощь - Поиск - Пользователи - Календарь
Полная версия: Множества
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
status
Помогите пожалуйста решить задачу : Вводятся 6 чисел, не превышающих 49. Программа также генерирует 6 различных чисел от 1 до 49 и сообщает, сколько из них пользователь угадал.
Артемий
В чем затруднение?Для генерации используй randomize; random(49);
status
Вводить числа я так понимаю лучше в ListBox?

если я правильно понимаю то код генериции 6 различных чисел :


const N=6; M=49;
var M:set of 1..M;
A:byte;
begin
Randomize;
M:=[];
for i:=1 to N do
begin
repeat
A:=Random(M)+1
until not(A in M);
M:=M+[A]
end;
end;



Если да, то как эти числа сравнить с ведёнными и покозать результат? unsure.gif
status
cray.gif
status
help me please!
Артемий
А обязательно нужно работать с формой?Командная строка нельзя?
volvo
Цитата
Вводить числа я так понимаю лучше в ListBox?
Зачем же ListBox? Memo удобнее будет...

procedure TForm1.ButtonClick(Sender: TObject);
const N=6; M=49;

var
userSet, setM: set of 1 .. M;
A, i: byte;
begin
Randomize;
setM:=[];
for i:=1 to N do begin
repeat
A:=Random(M)+1
until not(A in setM);
setM := setM+[A];
end;

// Мемо должен быть заполнен перед нажатием кнопки,
// причем все числа должны быть проверены на корректность
// Здесь проверяется только равенство "выигрышной комбинации"
userSet := [];
for i := 0 to Memo2.Lines.Count - 1 do
Include(userSet, StrToInt(Memo2.Lines[i]));

if userset = setm then ShowMessage('Yes !!!')
else ShowMessage('No');

end;

status
...и сообщает, сколько из них пользователь угадал.


это можно определить через Memo а то я с этой компонентой никогда не работал?
volvo
Тогда вот так:

procedure TForm1.Button1Click(Sender: TObject);
const N=6; M=49;

var
setM: set of 1 .. M;
A, i: byte;
amount: integer;
begin
Randomize;
setM:=[];
for i:=1 to N do begin
repeat
A:=Random(M)+1
until not(A in setM);
setM := setM+[A];
end;

amount := 0;
for i := 0 to Memo1.Lines.Count - 1 do
if StrToInt(Memo1.Lines[i]) in setM then inc(amount);

Showmessage(inttostr(amount) + ' совпадений ... ');

end;
status
Благодарю за помощь!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.