Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Matheus Brito

Calculadora em Delphi

Recommended Posts

Olá pessoal nao tenho experiência nenhuma em Delphi, no entanto tenho que fazer um calculadora, comecei a fazer e pintou um problema queria a ajuda de vcs para a resolução do mesmo.

 

O problema é que fiz uma funcao Fat para quando o cara clicar no botao de fatorial da calc calcular o fatorial, porem o parametro que a funcao pede eh int, so que o valor que to passando eh real, e esse valor nao pode ser mudado, ai quando vou mudar o parametro da funcao da u merro no for... e ai nao sei resolver.

 

 

unit calc;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, StdCtrls;

type
  TForm1 = class(TForm)
	visor: TEdit;
	btmais: TSpeedButton;
	bt8: TSpeedButton;
	btdiv: TSpeedButton;
	bt5: TSpeedButton;
	btmult: TSpeedButton;
	bt2: TSpeedButton;
	btlimpa: TSpeedButton;
	btfat: TSpeedButton;
	btmenos: TSpeedButton;
	btvirg: TSpeedButton;
	bt7: TSpeedButton;
	bt1: TSpeedButton;
	bt0: TSpeedButton;
	btig: TSpeedButton;
	bt4: TSpeedButton;
	btpot: TSpeedButton;
	bt9: TSpeedButton;
	bt6: TSpeedButton;
	bt3: TSpeedButton;
	btpi: TSpeedButton;
	procedure bt0Click(Sender: TObject);
	procedure bt1Click(Sender: TObject);
	procedure bt4Click(Sender: TObject);
	procedure bt7Click(Sender: TObject);
	procedure bt8Click(Sender: TObject);
	procedure bt5Click(Sender: TObject);
	procedure bt2Click(Sender: TObject);
	procedure bt3Click(Sender: TObject);
	procedure bt9Click(Sender: TObject);
	procedure bt6Click(Sender: TObject);
	procedure btvirgClick(Sender: TObject);
	procedure btlimpaClick(Sender: TObject);
	procedure btmaisClick(Sender: TObject);
	procedure btmenosClick(Sender: TObject);
	procedure btmultClick(Sender: TObject);
	procedure btdivClick(Sender: TObject);
	procedure btigClick(Sender: TObject);
	procedure btpotClick(Sender: TObject);
	procedure btpiClick(Sender: TObject);
	procedure btfatClick(Sender: TObject);


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

var
  Form1: TForm1;
  valor: real;
  operacao: Integer;
  valorointeiro: real;
  const PI=3.14159265;
implementation

{$R *.dfm}

function Fat(x:Integer):Double;
var
 i: Integer;
 f: Integer;
begin

 f := 1;
 for i := 1 to x do
  f := f*i;
  Result:= f;
end;



procedure TForm1.bt0Click(Sender: TObject);
begin
visor.Text:=visor.Text +'0';
end;

procedure TForm1.bt1Click(Sender: TObject);
begin
visor.Text:=visor.Text +'1';
end;

procedure TForm1.bt4Click(Sender: TObject);
begin
visor.Text:=visor.Text +'4';
end;

procedure TForm1.bt7Click(Sender: TObject);
begin
	 visor.Text:=visor.Text +'7';
end;

procedure TForm1.bt8Click(Sender: TObject);
begin
visor.Text:=visor.Text +'8';
end;

procedure TForm1.bt5Click(Sender: TObject);
begin
visor.Text:=visor.Text +'5';
end;

procedure TForm1.bt2Click(Sender: TObject);
begin
visor.Text:=visor.Text +'2';
end;

procedure TForm1.bt3Click(Sender: TObject);
begin
visor.Text:=visor.Text +'3';
end;

procedure TForm1.bt9Click(Sender: TObject);
begin
visor.Text:=visor.Text +'9';
end;

procedure TForm1.bt6Click(Sender: TObject);
begin
visor.Text:=visor.Text +'6';
end;

procedure TForm1.btvirgClick(Sender: TObject);
begin
visor.Text:=visor.Text +',';
end;

procedure TForm1.btlimpaClick(Sender: TObject);
begin
visor.Text:='';
valor:=0;
end;

procedure TForm1.btmaisClick(Sender: TObject);

//valor: real;
//operacao: Integer;
begin

   if (visor.Text <> '') then
  Begin
  valor:=strtofloat(visor.text);
  operacao:=1;
   visor.text:='';
  end;
end;

procedure TForm1.btmenosClick(Sender: TObject);
//valor: real;
//operacao: Integer;
begin
   if (visor.Text <> '') then
	Begin
  valor:=strtofloat(visor.text);
  operacao:=2;
  visor.text:='';
end;

end;
procedure TForm1.btmultClick(Sender: TObject);
begin
if (visor.Text <> '') then {aqui iremos verificar se o valor contido no visor é vazio, ou seja,  sem nenhum valor}
  Begin
  valor:=strtofloat(visor.text); {a variável valor recebe o valor contido no visor, devidamente transformado em um valor float, através da variável strtofloat}
  operacao:=4; {a variável operacao recebe 1, que é o valor para a operação de soma ser recohecida mais adiante}
   visor.text:=''; {visor fica em branco}
  end;
end;

procedure TForm1.btdivClick(Sender: TObject);
begin
if (visor.Text <> '') then {aqui iremos verificar se o valor contido no visor é vazio, ou seja,  sem nenhum valor}
  Begin
  valor:=strtofloat(visor.text); 

  operacao:=3; 
   visor.text:=''; 
  end;
end;

procedure TForm1.btigClick(Sender: TObject);
var
total : string;
valorreal : real;
numero:Integer;
begin
   val(visor.text, valorreal,numero); 
   case operacao of
   1: valor:= valor + valorreal; 
   2: valor:= valor - valorreal; 
   3: if (valorreal = 0) then
	  valor :=0
	  else
		 valor:= valor / valorreal;
   4: valor:= valor * valorreal; 
   5: valor:=valor*valor;
   6: valor:=Fat(valor); //Aqui ta dando erro pois o parametro que a funcao espera eh int
   end;
   str(valor:0:8, total);
   visor.text:= total;
   end;

procedure TForm1.btpotClick(Sender: TObject);


begin
if(visor.text<>'')then
begin
valor:=strtofloat(visor.text);
operacao:=5;
visor.text:='';
end;

end;
procedure TForm1.btpiClick(Sender: TObject);
begin



visor.Text:=floattostr(PI);




end;
procedure TForm1.btfatClick(Sender: TObject);
begin
if(visor.text<>'')then
begin
valor:=strtofloat(visor.text);
operacao:=6;
visor.text:='';
end;
end;

end.

 

abs

Compartilhar este post


Link para o post
Compartilhar em outros sites

valor:=strtofloat(visor.text);

troca para strtoint

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.