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