1. Калькулятор

Одно из первых занятий — это по привыкать к системе, потренироваться с компонентами.
Калькулятор — всем понятный, что особенно хорошо на нем много кнопок, позволяет потренироваться.

Предлагаю внеурочный вариант.
Внимание! За написание алгоритма и указанных поправок к нему бонус.

Я использовал две процедуры

procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);

Добавил глобальные переменные

c,oper:char; //последняя и предпоследняя операции
rez:real;       //значение результата
zap:boolean;//запятая (с ней есть ошибка, можно использовать процедуру pos() на наличие запятой  — решил не исправлять, предлагаю на досуге подумать …)

калькулятор

1. Процедура для всех кнопок …
procedure TForm1.Button1Click(Sender: TObject);
begin
c:=(Sender as TButton).Caption[1];
case (Sender as TButton).Tag of
1: c:=’o’; //  1/x
2: c:=’p’; //   ±
end;
case c of
‘,’:  if zap then begin
Edit1.Text:= Edit1.Text+c;
zap:=false;
end;
‘+’,’-‘,’/’,’*’,’=’: begin
case oper of
‘+’: Edit1.Text:=Floattostr(rez+StrtoFloat(Edit1.Text));
‘-‘: Edit1.Text:=Floattostr(rez-StrtoFloat(Edit1.Text));
‘/’: Edit1.Text:=Floattostr(rez/StrtoFloat(Edit1.Text));
‘*’: Edit1.Text:=Floattostr(rez*StrtoFloat(Edit1.Text));
end;
oper:=c;
rez:=StrtoFloat(Edit1.Text);
if c<>’=’ then Edit1.Text:=’0′;
end;
‘o’: begin Edit1.Text:=Floattostr(1/Strtofloat(Edit1.Text));  end;
‘C’: FormCreate(Sender);
‘%’: begin Edit1.Text:=Floattostr(Strtofloat(Edit1.Text)/100); end;
‘p’: begin Edit1.Text:=Floattostr(Strtofloat(Edit1.Text)*(-1)); end;
‘<‘: begin Edit1.Text:=copy(Edit1.Text,1,length(Edit1.Text)-1); end;
else begin
Edit1.Text:= Edit1.Text+c;
Edit1.Text:=Floattostr(Strtofloat(Edit1.Text));
end
end;
end;
2. Процедура создания формы, подготовка к работе
procedure TForm1.FormCreate(Sender: TObject);
begin
oper:=’ ‘;
rez:=0;
zap:=true;
Edit1.Text:=’0’;
end;

end.

Всего комментариев: 0

Оставить комментарий