Ver Mensaje Individual
  #1  
Antiguo 29-06-2016
wolfteamI wolfteamI is offline
Registrado
NULL
 
Registrado: jun 2016
Posts: 1
Reputación: 0
wolfteamI Va por buen camino
Talking ayúdenme a programar una calculadora científica

hola amigos soy nuevo de paquete en este sitio XDXD
bueno soy un novato en esto de programación en delphi y espero que me ayuden.
para mi primer programa lo que intento hacer es una calculadora científica que pueda calcular múltiples ejercicios como por ejemplo.
10-2*5

por el momento ya programe lo que es una calculadora básica que +,-,*,/(y+x)

este es mi codigo.
Código Delphi [-]
unit Unit3;

interface

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

type
  TForm3 = class(TForm)
    edt1: TEdit;
    btn0: TButton;
    btn1: TButton;
    btn2: TButton;
    btn3: TButton;
    btn4: TButton;
    btn5: TButton;
    btn6: TButton;
    btn7: TButton;
    btn8: TButton;
    btn9: TButton;
    btncoma: TButton;
    btn11: TButton;
    btndivision: TButton;
    btnmultiplicacion: TButton;
    btnresta: TButton;
    btnsuma: TButton;
    btnc: TButton;
    btnb: TButton;
    edt2: TEdit;
    procedure btn0Click(Sender: TObject);
    procedure btn1Click(Sender: TObject);
    procedure btn2Click(Sender: TObject);
    procedure btn3Click(Sender: TObject);
    procedure btn4Click(Sender: TObject);
    procedure btn5Click(Sender: TObject);
    procedure btn6Click(Sender: TObject);
    procedure btn7Click(Sender: TObject);
    procedure btn8Click(Sender: TObject);
    procedure btn9Click(Sender: TObject);
    procedure btndivisionClick(Sender: TObject);
    procedure btnmultiplicacionClick(Sender: TObject);
    procedure btnrestaClick(Sender: TObject);
    procedure btnsumaClick(Sender: TObject);
    procedure btncomaClick(Sender: TObject);
    procedure btncClick(Sender: TObject);
    procedure edt1Change(Sender: TObject);
    procedure btnbClick(Sender: TObject);
    procedure btn11Click(Sender: TObject);
  private
    { Private declarations }
    op:string;
    sumaouble;
    restaouble;
    productoouble;
    divisionouble;
    num1ouble;
    num2ouble;

    { Public declarations }
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.btn0Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn0.Caption;
end;

procedure TForm3.btncClick(Sender: TObject);
begin
edt1.Text:='';
end;

procedure TForm3.btncomaClick(Sender: TObject);
begin
edt1.Text:=edt1.Text+btncoma.Caption;
end;

procedure TForm3.btndivisionClick(Sender: TObject);
begin

edt1.Text:=edt1.Text+'/';

op:='/';
end;

procedure TForm3.btnmultiplicacionClick(Sender: TObject);
begin
edt1.Text:=edt1.Text+'*';
op:='*';
end;

procedure TForm3.btnrestaClick(Sender: TObject);
begin

edt1.Text:=edt1.Text+'-';

op:='-';
end;

procedure TForm3.btnsumaClick(Sender: TObject);

begin
edt1.Text:=edt1.Text+'+';
op:='+';
end;

procedure TForm3.edt1Change(Sender: TObject);
var
s,t:string;
begin
if edt1.Text=',' then
begin
  edt1.Text:='0'+','
end;
end;

procedure TForm3.btn11Click(Sender: TObject);
var
i,o,x:Integer;
a,b,c,d:string;
begin
 x:=Length(edt1.Text);
 a:=edt1.Text;
 i:=0;
 o:=0;
 repeat
   i:=i+1;
   o:=o+1;
   if a[i]='+' then
   begin
     d:=a[i];
     i:=x;
     o:=o+1
   end
   else
   begin
    if a[i]='-' then
    begin
      d:=a[i];
     i:=x;
     o:=o+1
    end
    else
    begin
      if a[i]='*' then
      begin
       d:=a[i];
       i:=x;
       o:=o+1
      end
      else
      begin
        if a[i]='/' then
        begin
          d:=a[i];
          i:=x;
          o:=o+1
        end
        else
        begin
          b:=b+a[i];
        end;
      end;
    end;
   end;
 until i=x ;
 for i := o to x do
   begin
     c:=c+a[i];
   end;
    if d='+' then
    begin
    try
      edt1.Text:=floatToStr((StrTofloat(b))+(StrTofloat(c)))
    except
      ShowMessage('datos no validos');

    end;
    end
    else
    begin
      if d='-' then
      begin
        try
         edt1.Text:=floatToStr((StrTofloat(b))-(StrTofloat(c)))
        except
      ShowMessage('datos no validos');

      end;
      end
      else
      begin
        if d='*' then
        begin
          try
          edt1.Text:=floatToStr((StrTofloat(b))*(StrTofloat(c)))
          except
           ShowMessage('datos no validos');
          end;
        end
        else
        begin
          if d='/' then
          begin
            try
             edt1.Text:=floatToStr((StrTofloat(b))/(StrTofloat(c)))
               except
              ShowMessage('datos no validos');
            end;
          end
          else
          begin
            ShowMessage('falta el operador:Ejemplo(x+y)');
          end;
        end;
      end;

    end;



end;

procedure TForm3.btn1Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn1.Caption;
end;

procedure TForm3.btn2Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn2.Caption;
end;

procedure TForm3.btn3Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn3.Caption;
end;

procedure TForm3.btn4Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn4.Caption;
end;

procedure TForm3.btn5Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn5.Caption;
end;

procedure TForm3.btn6Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn6.Caption;
end;

procedure TForm3.btn7Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn7.Caption;
end;

procedure TForm3.btn8Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn8.Caption;
end;

procedure TForm3.btn9Click(Sender: TObject);
begin
edt1.Text:=edt1.Text+btn9.Caption;
end;

procedure TForm3.btnbClick(Sender: TObject);
var
x:Integer;
s:string;
begin
s:=edt1.Text;
    x:=Length(s);
    Delete(s,x,1);
edt1.Text:=s;
end;

end.
bueno espero que me den alguna ayuda o idea o consejo de como puedo hacer un algoritmo para que pueda programar una calculadora científica
gracias.

Última edición por ecfisa fecha: 29-06-2016 a las 06:54:22. Razón: Etiquetas [delphi][/delphi]
Responder Con Cita