МОУ СОШ №3 г. Осташков Тверская обл.
  
 
 
 
 

Мини-проекты в Delphi

Фокус «Определение зачеркнутой цифры»

Предложите кому-либо задумать некоторое мно­гозначное число, найти сумму цифр этого числа и от­нять ее от задуманного числа. В полученной разности предложите зачеркнуть любую из цифр, отличную от нуля, и сообщить сумму остальных цифр (либо сооб­щить цифры этого числа). По объявленному результа­ту вы можете назвать зачеркнутую цифру — она рав­на тому числу, которое надо добавить к объявленному числу, чтобы получить ближайшее число, большее, чем объявленное, и делящееся на 9. Заметим, что если объявленное число уже делится на 9, значит, была за­черкнута цифра 9.
Пример. Пусть кто-либо написал число 782 345. Сумма цифр этого числа равна 29. Разность этих чисел есть число 782 316. Если зачеркнуть в нем некоторую цифру, например, 8, то сумма оставшихся цифр равна 19. Ближайшим    числом, большим 19 и делящимся на 9, является число 27. Разность 27 — 19 = 8 как раз и есть зачеркнутая цифра.
На форме разместим для меню MainMenu1, Image1, ниже метку Label1 и для ввода числа Edit1, кнопку BitBtn1 с надписью «Начнем». Для всех размер шрифта – 14.
В меню по порядку «Игра», «Новая игра», «-», «Выход».
В разделе implementation объявим переменные:
var
quest:array[1..8] of string;
nCl,res:byte;
Ниже запишем процедуру расчета зачеркнутой цифры.

 




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);
begin
if not (Key in ['0'..'9']) then Key := #0;
end;

Осталось меню. Для «Новая игра» событийная процедура –

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);
begin
Application.Terminate;
end;

Остается в Image1 загрузить какую-нибудь подходящую картинку.

 

 

 

 

 

 

 

 

 

 


 
О мини-проектах
Неуловимая кнопка
Вещий камень
Перетаскивание фигур
Секундомер
Градусы-радианы
Мультик
Падение тела
Прозрачная форма
Регионы
Шарик за мышкой
Таймер
Расписание уроков
Записная книжка
Задача по физике
Определение зачеркнутой цифры
Использование Microsoft Agent в Delphi
 Арифметика
 
 
 
 
 
 
 
 
 
 
 
 
 
 
             
Hosted by uCoz