Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Taschenrechner!!?? (https://www.delphipraxis.net/87872-taschenrechner.html)

Crank09 6. Mär 2007 16:15


Taschenrechner!!??
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen ich soll den im Anhang programmierten Taschenrechner nachbauen! Ich habe aber absolut keinen Peil wo und wie ich Anfangen soll.Könntet ihr mir bitte helfen

Danke schonmal im voraus

Gruß


Crank09

Real_Thunder 6. Mär 2007 16:22

Re: Taschenrechner!!??
 
Gegenfrage,
wieviel ahnung hast du von delphi ?

NormanNG 6. Mär 2007 16:23

Re: Taschenrechner!!??
 
Hi,

was hast du denn schon? wo ist das Problem?

Crank09 6. Mär 2007 16:43

Re: Taschenrechner!!??
 
Ich bin Schüler in der 9ten Klasse habe mit Delphi vor ca 1ner Woche angefangen mit anderen Worten ich habe GAR KEINE Ahnung(aber ich hätte gern welche) nur dabei brauch ich hilfe

Das Problem ist konkret gesagt das Programm an sich unser Lehrer meinte wir sollen mal versuchen das so zu schreiben :wall: aber ich weiß nicht wo ich anfangen soll und wie ich das schreiben soll

Crank09 6. Mär 2007 16:51

Re: Taschenrechner!!??
 
Achja ich arbeite mit Delphi 3 Professional und habe bis jetzt nur die Oberfläche

Axxus 6. Mär 2007 17:03

Re: Taschenrechner!!??
 
OK also ich würd erst ma eine VCL Formularanwendung für Win 32 starten.
Dann setzt du erst mal die Buttons (Knöpfe) so wie sie da stehen und setzt oben ein Label hin.
So der Taschenrechner kann ja nur eine rechnung ausführen und mur mit einer Zahl.
Also brauchst du nur 4 Varriablen
Zahl1, Zahl2 die müssen vom typ integer sein (Ganzzahlen)
Operator ( der ist für das *-+/) vom Typ char ( char steht für charakter und bedeutet, dass die Varriable nur eine Stelle haben kann)
Und zu guter Letzt brauchst du noch das Ergebnis vom Typ real ( das ist der Typ mit dem du mit Kommazahlen arbeiten kannst)
So jetzt musst du deinem Programm nur noch sagen, das es am anfang, wenn du auf ne Zahl klickst, die Varriable den wert der Zahl, auf die du geklickt hast, annehmen soll. Danach musst du deinem Programm sagen, dass du, wenn du auf einen Operator klickst er diesen Operator in die Varriable Operator speichert. und dann brauchst du noch Zahl 2 (hier darfst du nicht vergessen, dass der Computer erst die Zahl 2 annehmen darf wenn schon ein Operator ausgewählt wurde (Am besten mit einer IF Zweig) Dann musst du nur noch den Gleichbutton Programieren. Der sieht dann so aus, dass wenn du den operator + ausgewählt hast dann soll er Zahl1 + Zahl2 rechnen und wenn er den operator - ausgewählt hat dann soll der Zahl1 - Zahl2 machen ...
Und das Ergebnis soll er dann in das Label reinschreiben

Soweit zur vorgehensweise

Ich joffe du hast verstanden was ich meine
Den Code für sowas hab ich jetzt aus lernzwecken hier nicht gepostet (würde dir ja den Spass verderben)

Wenn du noch Fragen hast einfach posten

Gruß

Axxus

Crank09 6. Mär 2007 17:11

Re: Taschenrechner!!??
 
Danke hast du dir den Rechner mal angeschaut?
So einen Rechner hab ich auch schon programmiert (sogar mit Prozent und wurzeln)
Ich meine so einen Rechner wie ein taschenrechner aufgebaut also das du eine Zahl eingibtst und das wird dann in einem Label angegeben und die Operator werden dann durch Bottons angegeben und da weiß ich beim besten willen nicht, wie ich das einstellen soll das alle botoms das oben angeben dann auch noch mit Operator und so ???!!!

Aber herzlichen Dank für deine Mühe


Gruß

Crank09

NormanNG 6. Mär 2007 18:18

Re: Taschenrechner!!??
 
Hi,

um es einfach zu halten:
du brauchst eine Variable für den Operanten, eine Variable für das Ergebnis und eine Variable für die aktuelle Funktion.
(1) Mit jeder Funktionstaste wird dann das Ergebnis (i.d. Zahl in der Anzeige) nach ZAHL übernommen und die Funktion gemerkt.
(2) Mit der nächsten Funktionstaste muss dann zuerst das Ergebnis berechnet ( ERG = f(ZAHL, ERG) ) und angezeigt werden. Dann wird bei (1) weitergemacht.

Axxus 6. Mär 2007 20:42

Re: Taschenrechner!!??
 
Ehm irgenwie widersprichst du dir :gruebel:

erst sagst du

Zitat:

Zitat von Crank09
Danke hast du dir den Rechner mal angeschaut?
So einen Rechner hab ich auch schon programmiert (sogar mit Prozent und wurzeln)

und dann



Zitat:

Zitat von Crank09
Ich meine so einen Rechner wie ein taschenrechner aufgebaut also das du eine Zahl eingibtst und das wird dann in einem Label angegeben und die Operator werden dann durch Bottons angegeben und da weiß ich beim besten willen nicht, wie ich das einstellen soll das alle botoms das oben angeben dann auch noch mit Operator und so ???!!!
Crank09

Ich hoffe ich hab dich jetzt nicht falsch verstanden aber ich hab doch eine Lösung vorgeschlagen

Als Code würde ich dir nun folgendes vorschlagen (Is vll besser wenn du en anschauliches beispiel hast)

Delphi-Quellcode:
unit Taschenrechner;

interface

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

type
  TForm1 = class(TForm)
    Button_1: TButton;
    procedure Button_1Click(Sender: TObject);
    procedure Button_plusClick(Sender: TObject);
    procedure Button_gleichClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Zahl1, Zahl2, Zahlnr : integer;
  Operator1: Char;
  Ergebnis: real;
  KOntrolle_1, KOntrolle_2, KOntrolle_O: Boolean;

implementation

{$R *.dfm}

procedure TForm1.Button_1Click(Sender: TObject);
begin
  If Zahlnr = 1 Then
  begin
    Zahl1 := '1';
    Kontrolle_1 := true;
    Label1.Caption := (inttostr(Zahl1));
  end
  else
  begin
  Zahl2 := '1';
  KOntrolle_2 := true;
  Label1.Caption := (inttostr(Zahl2));
  end;
end;

procedure TForm1.Button_plusClick(Sender: TObject);
begin
  Operator1 := '+';
  Zahlnr := 2;
  Kontrolle_O := true;
end;

procedure TForm1.Button_gleichClick(Sender: TObject);
begin
  If (Kontrolle_1 = true) and (Kontrolle_2 = true) and (Kontrolle_O = true) Then
  begin
    If Operator1 = + Then
    begin
      Ergebnis := Zahl1 + Zahl2;
    end
    .
    .
    .
  Zahl1 := '';
  Zahl2 := '';
  Operator1 := '';
  Label1.Caption := (Floattostr (Ergebnis));
  end;
end;

end.
Erklärungen kommen morgen bin jetzt zu müde dazu

Sollte ich ein paar Syntaxfehler gemacht haben bitte korrigieren bin mom ziemlich müde und hab den code nicht getestet.


@ Crank09
Wenn du dich für Informatik und für Delphi interessiert und mehr lernen möchtest als im Schulunterricht würde ich als Nachtrlektüre
1. Turbo Pascal & Delphi für kids von Hans-Georg Schumann (Verlag mitp) (isbn 3-8266-0642-6)
2. Delphi für kids von Hans-Georg Schumann (Verlag mitp) (isbn 3-8266-0643-4)

empfehlen

Die Bücher sind echt gut und erschwinglich und haben mir sehr geholfen als ich angefangen hab

Hoffe es hilft die und morgen kommt noch ne erklärung zu dem code

Axxus

Crank09 7. Mär 2007 09:03

Re: Taschenrechner!!??
 
ICH MEINTE SO EINEN rECHNER WIE DU IHN MIR ZUERST BESCHRIEBEN HAST.

Danke das du dir die mühe gemacht hast

Crank09 7. Mär 2007 09:27

Re: Taschenrechner!!??
 
So hat mein Lehrer das programmiert :wiejetzt:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    Button8: TButton;
    Button9: TButton;
    Button10: TButton;
    Button11: TButton;
    Button12: TButton;
    Button13: TButton;
    Button14: TButton;
    Button15: TButton;
    Button16: TButton;
    Button17: TButton;
    Button18: TButton;
    Label1: TLabel;
    Button19: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Label1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
    procedure Button13Click(Sender: TObject);
    procedure Button14Click(Sender: TObject);
    procedure Button15Click(Sender: TObject);
    procedure Button16Click(Sender: TObject);
    procedure Button18Click(Sender: TObject);
    procedure Button11Click(Sender: TObject);
    procedure Button19Click(Sender: TObject);
    procedure Button12Click(Sender: TObject);
    procedure Button17Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  zahl, ergebnis, f, w : real;
  operator            : Char;
  komma               : boolean;
  i                   : integer;
implementation

{$R *.DFM}

procedure TForm1.Label1Click(Sender: TObject);
begin
     zahl := 0;
     ergebnis := 0;
     f := 10;
     operator := '+';
     label1.Caption := floattostr ( zahl);
     label1.color  := clgray;
     label1.alignment := taRightJustify;
     komma := false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
      if komma = false then begin
         zahl := zahl * f + 1;
      end else begin
          zahl := zahl + 1 / f;
          f := f * 10;
      end;
      label1.caption := floattostrf ( zahl, ffnumber,7,4);
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
      if komma = false then begin
         zahl := zahl * f + 2;
      end else begin
          zahl := zahl + 2 / f;
          f := f * 10;
      end;
      label1.caption := floattostrf ( zahl, ffnumber,7,4);
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
      if komma = false then begin
         zahl := zahl * f + 3;
      end else begin
          zahl := zahl + 3 / f;
          f := f * 10;
      end;
      label1.caption := floattostrf ( zahl, ffnumber,7,4);
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
      if komma = false then begin
         zahl := zahl * f + 4;
      end else begin
          zahl := zahl + 4 / f;
          f := f * 10;
      end;
      label1.caption := floattostrf ( zahl, ffnumber,7,4);
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
      if komma = false then begin
         zahl := zahl * f + 5;
      end else begin
          zahl := zahl + 5 / f;
          f := f * 10;
      end;
      label1.caption := floattostrf ( zahl, ffnumber,7,4);
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
      if komma = false then begin
         zahl := zahl * f + 6;
      end else begin
          zahl := zahl + 6 / f;
          f := f * 10;
      end;
      label1.caption := floattostrf ( zahl, ffnumber,7,4);
end;

procedure TForm1.Button7Click(Sender: TObject);
begin
      if komma = false then begin
         zahl := zahl * f + 7;
      end else begin
          zahl := zahl + 7 / f;
          f := f * 10;
      end;
      label1.caption := floattostrf ( zahl, ffnumber,7,4);
end;

procedure TForm1.Button8Click(Sender: TObject);
begin
      if komma = false then begin
         zahl := zahl * f + 8;
      end else begin
          zahl := zahl + 8 / f;
          f := f * 10;
      end;
      label1.caption := floattostrf ( zahl, ffnumber,7,4);
end;

procedure TForm1.Button9Click(Sender: TObject);
begin
       if komma = false then begin
         zahl := zahl * f + 9;
      end else begin
          zahl := zahl + 9 / f;
          f := f * 10;
      end;
      label1.caption := floattostrf ( zahl, ffnumber,7,4);
end;

procedure TForm1.Button10Click(Sender: TObject);
begin
      if komma = false then begin
         zahl := zahl * f + 0;
      end else begin
          zahl := zahl + 0 / f;
          f := f * 10;
      end;
      label1.caption := floattostrf ( zahl, ffnumber,7,4);
end;

procedure TForm1.Button13Click(Sender: TObject);
begin
     case operator of
          '+' : ergebnis := ergebnis + zahl;
          '-' : ergebnis := ergebnis - zahl;
          '*' : ergebnis := ergebnis * zahl;
          '/' : ergebnis := ergebnis / zahl;
          '%' : ergebnis := ergebnis * zahl / 100;
     end;
     zahl := 0;
     operator := '+';
     label1.Caption := floattostrf ( zahl, ffnumber,7,4);
     f:= 10;
     komma := false;
end;

procedure TForm1.Button14Click(Sender: TObject);
begin
     case operator of
          '+' : ergebnis := ergebnis + zahl;
          '-' : ergebnis := ergebnis - zahl;
          '*' : ergebnis := ergebnis * zahl;
          '/' : ergebnis := ergebnis / zahl;
          '%' : ergebnis := ergebnis * zahl / 100;
     end;
     zahl := 0;
     operator := '-';
     label1.Caption := floattostrf ( zahl, ffnumber,7,4);
     f:= 10;
     komma := false;
end;

procedure TForm1.Button15Click(Sender: TObject);
begin
     case operator of
          '+' : ergebnis := ergebnis + zahl;
          '-' : ergebnis := ergebnis - zahl;
          '*' : ergebnis := ergebnis * zahl;
          '/' : ergebnis := ergebnis / zahl;
          '%' : ergebnis := ergebnis * zahl / 100;
     end;
     zahl := 0;
     operator := '*';
     label1.Caption := floattostrf ( zahl, ffnumber,7,4);
     f:= 10;
     komma := false;
end;

procedure TForm1.Button16Click(Sender: TObject);
begin
     case operator of
          '+' : ergebnis := ergebnis + zahl;
          '-' : ergebnis := ergebnis - zahl;
          '*' : ergebnis := ergebnis * zahl;
          '/' : ergebnis := ergebnis / zahl;
          '%' : ergebnis := ergebnis * zahl / 100;
     end;
     zahl := 0;
     operator := '/';
     label1.Caption := floattostrf ( zahl, ffnumber,7,4);
     f:= 10;
     komma := false;
end;

procedure TForm1.Button11Click(Sender: TObject);
begin
     case operator of
          '+' : ergebnis := ergebnis + zahl;
          '-' : ergebnis := ergebnis - zahl;
          '*' : ergebnis := ergebnis * zahl;
          '/' : ergebnis := ergebnis / zahl;
          '%' : ergebnis := ergebnis * zahl / 100;
     end;
     zahl := 0;
     operator := '%';
     label1.Caption := floattostrf ( zahl, ffnumber,7,4);
     f:= 10;
     komma := false;
end;

procedure TForm1.Button18Click(Sender: TObject);
begin
     case operator of
          '+' : ergebnis := ergebnis + zahl;
          '-' : ergebnis := ergebnis - zahl;
          '*' : ergebnis := ergebnis * zahl;
          '/' : ergebnis := ergebnis / zahl;
          '%' : ergebnis := ergebnis * zahl / 100;
          'h' : begin
                     f       := ergebnis;
                     ergebnis := 1;
                   for i := 1 to trunc(zahl)do begin
                       ergebnis := ergebnis * f;
                   end;
                end;
          'w' : begin
                      w       := ergebnis;
                      ergebnis := 0;
                   repeat
                         ergebnis := ergebnis + 0.00001;
                         f := 1;
                      for i := 1 to trunc (zahl) do begin
                          f := f * ergebnis;
                      end;
                   until f >= w;
                        ergebnis := ergebnis - 0.00001;
              end;
     end;
     zahl := 0;
     operator := '+';
     label1.Caption := floattostr ( zahl);
     label1.caption := floattostrf (ergebnis, ffnumber,7,4);
     ergebnis      := 0;
     f := 10;

end;
procedure TForm1.Button19Click(Sender: TObject);
begin
     komma := true;
     f := 10;
end;

procedure TForm1.Button12Click(Sender: TObject);
begin
     case operator of
          '+' : ergebnis := ergebnis + zahl;
          '-' : ergebnis := ergebnis - zahl;
          '*' : ergebnis := ergebnis * zahl;
          '/' : ergebnis := ergebnis / zahl;
          '%' : ergebnis := ergebnis * zahl / 100;

     end;
     zahl := 0;
     operator := 'h';
     label1.Caption := floattostrf ( zahl, ffnumber,7,4);
     f:= 10;
     komma := false;
end;

procedure TForm1.Button17Click(Sender: TObject);
begin
     case operator of
          '+' : ergebnis := ergebnis + zahl;
          '-' : ergebnis := ergebnis - zahl;
          '*' : ergebnis := ergebnis * zahl;
          '/' : ergebnis := ergebnis / zahl;
          '%' : ergebnis := ergebnis * zahl / 100;

     end;
     zahl := 0;
     operator := 'w';
     label1.Caption := floattostrf ( zahl, ffnumber,7,4);
     f:= 10;
     komma := false;
end;

end.
aber danke
:-D

[edit=Phoenix]Derlphi-Tags gesetzt. Das nächste mal selber machen. Mfg, Phoenix[/edit]

Sascha.E 7. Mär 2007 11:28

Re: Taschenrechner!!??
 
also dafür dass ihr erst seit ner woche delphi behandelt würde ich sagen dein lehrer hat nen platten ^^ bei uns wurde dat anders gelehrt. aber ich hab ja auch mit pascal angefangen und net mit delphi ^^

viel erfolg weiterhin!

tobu 7. Mär 2007 12:05

Re: Taschenrechner!!??
 
Ich finde das der Code von deinem Lehrer sehr schlecht ist, die Buttons und Variablen sind nicht ordentlich benannt, der Taschenrechner rechnet nicht Punkt vor Strich,.......

Ich finde wenn man jemandem etwas beibringen möchte, dann sollte man es ordentlich machen.

Crank09 8. Mär 2007 19:51

Re: Taschenrechner!!??
 
Ich weiß er meinte auch nur wir sollen es mal versuchen. Aber ich wollte es gerne ausprobieren und da dachte ich mir hol ich mir mal hilfe.
Das der nicht so gut rechnet habe ich auch schon gemerkt naja der macht das auch nicht so oft mit delphi.


Aber trotzdem danke für eure Mühen




Gruß


Crank09


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz