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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2007, 18:24   #1
Димарик
Пользователь
 
Аватар для Димарик
 
Регистрация: 15.06.2007
Сообщений: 40
По умолчанию Быки и коровы

Всем доброго времени суток.
- немогли бы во попробовать мне помочь?

-задача такая, обычная игра быки и коровы.
только вот особенность она должна загадывать число в 8ми ричной системе.
- чувстую что все просто, но вот только пока немагу понять с чего начать и как лучше реализовать.
Димарик вне форума Ответить с цитированием
Старый 04.10.2007, 00:39   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Начать можно с реализации в 10-тичной системе
А если мысли отсутствуют как класс, то лучше перенести эту тему в раздел "Работа для программиста" или "Помощь студентам"...
mihali4 вне форума Ответить с цитированием
Старый 04.10.2007, 14:16   #3
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

проблемы помоему нет
просто по циферно нужно загадать число
цифры рандом от 1 до 7
главное чтобы они были разные
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 04.10.2007, 15:14   #4
dima84sh
Новичок
Джуниор
 
Регистрация: 04.10.2007
Сообщений: 1
По умолчанию

Я видно нетуда попал, быки коровы?
dima84sh вне форума Ответить с цитированием
Старый 04.10.2007, 16:56   #5
bill
Форумчанин
 
Аватар для bill
 
Регистрация: 26.04.2007
Сообщений: 440
По умолчанию

вот делал год-два назад.
здесь выкладывал систему счисления. Обьедините и получится ваша прога.
Вложения
Тип файла: zip быки и коровы.zip (196.5 Кб, 114 просмотров)

Последний раз редактировалось bill; 04.10.2007 в 17:18.
bill вне форума Ответить с цитированием
Старый 01.12.2009, 19:51   #6
Денис56
 
Регистрация: 14.11.2009
Сообщений: 4
По умолчанию

Всем доброго времени суток.
Помогите, пожалуйста, решить задачу, обычная игра быки и коровы (delphi)
Нашел алгоритм своей задачи на паскале, решил переделать ее в делфи.
Подскажите, как правильно сделать обращение на ввод быков и коров
(Form1.Edit2.Text)?

Код:
const MaxSgn = 6; {Максимальное значение в числе}
Sgn = 4; {Количество цифр в числе}
type
S = 1..MaxSgn;
Numb = array[1..Sgn] of S;
type
Step = Record {Информация об одном вопросе - ответе}
n : Numb; {Спрошенное число}
answer : integer; {Ответ}
end;
Game = array[1..32] of step;
{Информация о всех вопросах - ответах}
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N7: TMenuItem;
N6: TMenuItem;
ImageList1: TImageList;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;

procedure N6Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure Edit2KeyPress(Sender: TObject; var Key: Char);
procedure N5Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses About_unit, F_help;

{$R *.dfm}

procedure TForm1.N6Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
AboutForm.ShowModal;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
Help_Form.ShowModal;
end;

function cows(n1,n2:Numb):integer;
{Сравнивает два числа и возвращает результат
сравнения в виде <количество быков>*10+<количество коров>}
var i1,i2 : 1..Sgn;
a : integer;
begin
{Необходимо сравнивать все цифры первого
числа со всеми цифрами второго}
a:=0;
for i1:=1 to Sgn do
for i2:=1 to Sgn do
if n1[i1]=n2[i2] then
if i1=i2 then a:=a+10 {Встретился 'Бык'}
else inc(a);
cows:=a;
end;

function vvv():Numb;
var
i,j : integer; Curnumb:Numb;
BEGIN
Form1.Edit2.Text:='';
for i:=1 to Sgn do Curnumb[i]:=i;
for i:=1 to Sgn do Form1.Edit1.Text:=Form1.Edit1.Text+ IntToStr(Curnumb[i]);
Form1.Edit1.Text:=Form1.Edit1.Text+ '?';
vvv:=Curnumb;
Form1.Edit2.SetFocus;
end;

procedure FTK; {пересчет }
var Nstep : integer; {Номер текущего шага}
Info : Game;
Curnumb : Numb; i,j : integer; b : boolean;
BEGIN
Nstep:=0;
Curnumb:=vvv;
Form1.Edit2.SetFocus;
if (Length(Form1.Edit2.Text)<>2) then Form1.Edit2.Text;//FFF;
while true do
{Пока не будут перебраны все числа
или не найденно решение}
begin
{Спросить текущее число}
inc(Nstep);
Info[Nstep].n:=Curnumb;
Info[Nstep].Answer:=StrToint(Form1.Edit2.Text) ;
{Пользователь должен ввести число, первая цифра
которого 'Быки', вторая - 'Коровы'}
if (Info[Nstep].Answer div 10+Info[Nstep].Answer mod 10)>Sgn then
begin
Form1.Label2.Caption:='Плохая игра !';
exit;
end;
{'Быков' и 'Коров' вместе не может быть больше, чем цифр}
if Info[Nstep].Answer=10*Sgn then exit;
{Далее идет генерация нового числа}
repeat
i:=Sgn;
{Увеличение числа на 1-цу}
while (i>=1) and (Curnumb[i]=MaxSgn) do
begin
Curnumb[i]:=1;
dec(i);
end;
if i<1 then
begin {Все числа перебраны, а ответ не найден}
Form1.Label2.Caption:='Вы неправильно отвечали !';
exit;
end;
inc(Curnumb[i]);
b:=true;
{Проверка на встречающиеся одинаковые цифры}
for i:=1 to Sgn do
for j:=i+1 to Sgn do
b:=b and (Curnumb[i]<>Curnumb[j]);
for i:=1 to Nstep
do b:=b and (cows(Curnumb,Info[i].n)=Info[i].Answer);
until b;
end; {while}
end;

procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
if (Length(Edit2.Text)=2) and (key <> #8) then
Begin
if (key=chr(13)) and (Length(Edit2.Text)<>0) Then FTK;
Key:=Chr(0);
end;
case Key of
'0'..'4',Chr(8) : ;
else Key:=Chr(0); {запрещенные символы не отображать}
end;
end;

procedure TForm1.N5Click(Sender: TObject);
begin
Form1.Edit1.Text:='';
FTK;
end;
end.
Денис56 вне форума Ответить с цитированием
Ответ


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