Einzelnen Beitrag anzeigen

Prakti16

Registriert seit: 26. Sep 2016
23 Beiträge
 
#3

AW: Taschenrechner (Anfänger) Problem mit Minuszahlen

  Alt 30. Sep 2016, 11:49
Ok danke ich mache das jetzt gerade in In real.
Delphi-Quellcode:
unit Taschenrechner;

interface

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

type
  TForm1 = class(TForm)
    Gleich: TButton;
    Addieren: TButton;
    Subtrahieren: TButton;
    Multiplizieren: TButton;
    Dividieren: TButton;
    Edit1: TEdit;
    Zahl1: TButton;
    Zahl2: TButton;
    Zahl3: TButton;
    Zahl4: TButton;
    Zahl5: TButton;
    Zahl6: TButton;
    Zahl7: TButton;
    Zahl8: TButton;
    Zahl9: TButton;
    Label1: TLabel;
    Zahl0: TButton;
    Aus: TButton;
    Rechenweg: TLabel;
    C: TButton;
    procedure Zahl1Click(Sender: TObject);
    procedure AusClick(Sender: TObject);
    procedure AddierenClick(Sender: TObject);
    procedure SubtrahierenClick(Sender: TObject);
    procedure MultiplizierenClick(Sender: TObject);
    procedure DividierenClick(Sender: TObject);
    procedure GleichClick(Sender: TObject);
    procedure CClick(Sender: TObject);
  private
    { Private-Deklarationen}
    function TextZuZahl(Text: String): real;
// Deklaration nur mit den Kopf Der Funktion
  public
    { Public-Deklarationen }
end;
var
  Form1: TForm1;
  LetzteZahl: Integer;
  Zwischensumme: real;
  Rechnung: String;

implementation

{$R *.dfm}
function TForm1.TextZuZahl(Text: String): real;
begin
  result := StrToFloat(Text);
end;
function TForm1.MehrZahlenAlsZwei(Zwischensumme: real; LetzteZahl: Integer): real;
begin
  result := Zwischensumme + LetzteZahl;
end;

procedure TForm1.Zahl1Click(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + (Sender as TButton).Caption;
  Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption;
end;

procedure TForm1.AusClick(Sender: TObject);
begin
  Close;
end;

procedure TForm1.AddierenClick(Sender: TObject); // Pluszeichen-Button ( + )
begin
  Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption;
  Rechnung := '+';
  GleichClick(nil);
  LetzteZahl := StrToInt(Edit1.Text);
  Edit1.Text := '';
end;

procedure TForm1.SubtrahierenClick(Sender: TObject); // Minuszeichen-Button ( - )
begin
  Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption;
  Rechnung := '-';
  GleichClick(nil);
  LetzteZahl := StrToInt(Edit1.Text);
  Edit1.Text := '';
end;

procedure TForm1.MultiplizierenClick(Sender: TObject); // Malzeichen-Button ( * )
begin
  Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption;
  Rechnung := '*';
  GleichClick(nil);
  LetzteZahl := StrToInt(Edit1.Text);
  Edit1.Text := '';
end;

procedure TForm1.DividierenClick(Sender: TObject); // Geteiltzeichen-Button ( / )
begin
  Rechenweg.Caption := Rechenweg.Caption + (Sender as TButton).Caption;
  Rechnung := '/';
  GleichClick(nil);
  LetzteZahl := StrToInt(Edit1.Text);
  Edit1.Text := '';
end;

procedure TForm1.GleichClick(Sender: TObject); // Gleichzeichen-Button ( = )
begin

  // Addieren
  if (Rechnung = '+') then
  begin
    Zwischensumme := Zwischensumme + TextZuZahl(Edit1.Text);
    Label1.Caption := FloatToStr(Zwischensumme);
  end;

  // Subtrahieren
  if (Rechnung = '-') then
  begin
    Zwischensumme := LetzteZahl + Zwischensumme - TextZuZahl(Edit1.Text);
    Label1.Caption := FloatToStr(Zwischensumme);
  end;

  // Multiplizieren
  if (Rechnung = '*') then
  begin
    if (Zwischensumme > 0) then
    begin
      Zwischensumme := Zwischensumme * TextZuZahl(Edit1.Text);
    end else
    begin
      Zwischensumme := LetzteZahl * TextZuZahl(Edit1.Text);
    end;
    Label1.Caption := FloatToStr(Zwischensumme);
  end;

  // Dividieren
  if (Rechnung = '/') then
  begin
    if (Zwischensumme > 0) then
    begin
      Zwischensumme := Zwischensumme / TextZuZahl(Edit1.Text);
    end else
    begin
      Zwischensumme:= LetzteZahl / TextZuZahl(Edit1.Text);
    end;
    Label1.Caption := FloatToStr(Zwischensumme);
  end;
end;

procedure TForm1.CClick(Sender: TObject);
begin
  Rechenweg.Caption := '';
  Edit1.Text := '';
  Label1.Caption := '';
  Zwischensumme := 0;
  LetzteZahl := 0;
end;

end.

Geändert von Prakti16 (30. Sep 2016 um 11:58 Uhr)
  Mit Zitat antworten Zitat