САЙТ УЧИТЕЛЯ ИНФОРМАТИКИ |
|||||||||||||||
МОУ СОШ №3 г. Осташков Тверская обл. | |||||||||||||||
|
Мини-проекты в Delphi Фокус «Определение зачеркнутой цифры» Предложите кому-либо задумать некоторое многозначное число, найти сумму цифр этого числа и отнять ее от задуманного числа. В полученной разности предложите зачеркнуть любую из цифр, отличную от нуля, и сообщить сумму остальных цифр (либо сообщить цифры этого числа). По объявленному результату вы можете назвать зачеркнутую цифру — она равна тому числу, которое надо добавить к объявленному числу, чтобы получить ближайшее число, большее, чем объявленное, и делящееся на 9. Заметим, что если объявленное число уже делится на 9, значит, была зачеркнута цифра 9.
procedure raschet; Var s,p,zn,bk:byte; begin s:=0; while res>0 do begin p:= res mod 10; s:=s+p; res:=res div 10; end; if (s mod 9)=0 then zn:=9 else begin bk:=(s div 9 +1)*9; zn:=bk-s; end; res:=zn; end; Затем процедуру загрузки формы procedure TForm1.FormCreate(Sender: TObject); begin quest[1]:='Сейчас я покажу Вам фокус!'; quest[2]:='Задумайте любое число, большее 20'; quest[3]:='Найдите сумму его цифр'; quest[4]:='Вычтете ее из задуманного числа'; quest[5]:='В полученной разности зачеркните любую'+#10+#13 + 'цифру, кроме нуля'; quest[6]:='Найдите сумму оставшихся цифр'; quest[7]:='Чему равна эта сумма цифр?'; quest[8]:='Вы зачеркнули цифру - '; nCl:=0; end; Здесь заполняется массив сообщений и начальное число кликов кнопки устанавливается в 0. При щелчках по кнопке происходит смена надписей в метке и на кнопке, а в нужный момент вызывается процедура расчета. При этом если не введено число происходит возврат назад: nCl:=6; procedure TForm1.BitBtn1Click(Sender: TObject); var code:integer; begin inc(nCl); Label1.Caption:= quest[nCl]; if nCl=1 then BitBtn1.Caption:='Дальше'; if nCl=2 then BitBtn1.Caption:='Задумал'; if nCl=3 then BitBtn1.Caption:='Нашел'; if nCl=4 then BitBtn1.Caption:='Вычел'; if nCl=5 then BitBtn1.Caption:='Зачеркнул'; if nCl=6 then BitBtn1.Caption:='Нашел'; if nCl=7 then begin Edit1.Visible:=true; Label1.Alignment:=taRightJustify; BitBtn1.Caption:='Завершить'; Edit1.SetFocus; end; if nCl=8 then if Edit1.Text<>'' then begin Val(Edit1.Text, res, Code); BitBtn1.Enabled:=false; raschet; Label1.Caption:= quest[8]; Edit1.text:=IntToStr(res); exit; end else begin nCl:=6; BitBtn1.Caption:='Нашел'; Label1.Caption:= quest[7]; end; end; Чтобы не вводились другие символы кроме цифр, создадим процедуру procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); Осталось меню. Для «Новая игра» событийная процедура – procedure TForm1.N2Click(Sender: TObject);
begin
nCl:=1;
BitBtn1.Enabled:=true;
BitBtn1.Caption:='Начнем!';
Label1.Alignment:=taLeftJustify;
Label1.Caption :='';
Edit1.Text:='';
Edit1.Visible:=false;
end;
А для «Выход» - procedure TForm1.N4Click(Sender: TObject); Остается в Image1 загрузить какую-нибудь подходящую картинку.
|
||||||||||||||