AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Rechner programmieren

Ein Thema von Tytomik · begonnen am 25. Feb 2011 · letzter Beitrag vom 25. Apr 2011
Antwort Antwort
Seite 1 von 2  1 2      
Tytomik

Registriert seit: 25. Feb 2011
24 Beiträge
 
#1

Rechner programmieren

  Alt 25. Feb 2011, 19:39
Hallo,
ich habe neu angefangen mit Delphi zu prgrammieren.
Und war heute dabei einen Rechner zu programmieren.(Mit Zufallszahlen).
Mit *,/,-,+ es funktionirte alles so weit ich habe es mit den Real zahlen gemacht.
Aber dann wollte ich noch einen neuen button machen, dass wenn man drauf drückt eine geteilt Aufgabe mit Rest ausgerechnet wird, allerdings ging das nur mit Integer und jetzt geht entweder nur das teilen mit Real Zahlen oder das teilen mit Rest also Integer. Meine Frage ist wo ist hier der Fehler :

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Button2: TButton;
    Label3: TLabel;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Label4: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var a,b,c: Integer;
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
randomize;
a:= random(1001);
b:= random(1001);
Label1.Caption :=inttostr
(a);
Label2.Caption :=inttostr
(b);
form1.color:= clgreen;
Label3.Caption:= '0';


end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Label3.caption:= inttostr(a+b);
If Strtoint(Label3.Caption)>500 then begin
Form1.Color:= clred;
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Label3.caption:= inttostr(a-b);
If Strtoint(Label3.Caption)>500 then begin
Form1.Color:= clred;
end;

end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Label3.caption:= inttostr(a*b);
If Strtoint(Label3.Caption)>500 then begin
Form1.Color:= clred;
end;
end;


procedure TForm1.Button6Click(Sender: TObject);
begin
Label3.caption:= inttostr(a div b);
Label4.caption:= inttostr(a mod b);
end;

procedure TForm1.Button5Click(Sender: TObject);
var a,b: real;
begin
Label3.caption:= floattostr(a-b);
If Strtofloat(Label3.Caption)>500 then begin
Form1.Color:= clred;

end;
end;
Freue mich bei positiver rückmeldung. Danke.

Geändert von MrSpock (25. Feb 2011 um 20:34 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#2

AW: Rechner programmieren

  Alt 25. Feb 2011, 20:12
Nachdem du das Divisionsergebnis ausgerechnet hast, kannst du mit Delphi-Referenz durchsuchenFrac und Delphi-Referenz durchsuchenTrunc das Ergebnis in den ganzzahligen Anteil und den Rest (Nachkommaanteil) zerlegen.

> also entweder den Nachkommaanteil direkt als "Rest" nutzen
> vom Ergebnis den Nachkommaanteil abschneiden (Tunc), dann vom Dividend den ganzahligen Teil abziehen und übrig bleibt der Rest
> oder den Nachkommaanteil wieder mit dem Divisor multiplizieren und das ergibt dann den Rest.


DIV und MOD sind eben nur für ganzahlige Integertypen geeignet.
Fließkommazahlen kann man mit / teilen ... einen Rest gibt es da allerdings eigentlich nicht, da dort der "Rest" im Nachkommaanteil Platz hat.

PS: Es wäre hübsch, wenn du in deinem Beigrag noch das [delphi].Tag um den Quellcode legen könntest.
Einfach den ersten Beitrag editieren, den Quellcode markieren und den [delphi]-Button (der mit dem roten Delphihelm) drücken.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (25. Feb 2011 um 20:20 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von lbccaleb
lbccaleb

Registriert seit: 25. Mai 2006
Ort: Rostock / Bremen
2.037 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: Rechner programmieren

  Alt 25. Feb 2011, 20:17
Und randomize sollte nur einmal im oncreate aufgerufen werden.nnnn
Martin
MFG Caleb
TheSmallOne (MediaPlayer)
Die Dinge werden berechenbar, wenn man die Natur einer Sache durchschaut hat (Blade)
  Mit Zitat antworten Zitat
Tytomik

Registriert seit: 25. Feb 2011
24 Beiträge
 
#4

AW: Rechner programmieren

  Alt 25. Feb 2011, 20:22
also kann man nicht bei einem programm Integer und Real Zahlen benutzen.


LG
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#5

AW: Rechner programmieren

  Alt 25. Feb 2011, 20:28
Wie schon gesagt, kannst du mit trunc und frac aus Realzahlen Integerwerte herstellen.
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Tytomik

Registriert seit: 25. Feb 2011
24 Beiträge
 
#6

AW: Rechner programmieren

  Alt 25. Feb 2011, 20:30
Tut mir echt leit das verstehe ich immer noch nicht ganz könnetet ihr mr den teil nicht mal richtig schrieben:

Delphi-Quellcode:
procedure TForm1.Button5Click(Sender: TObject);
var a,b: real;
begin
Label3.caption:= floattostr(a-b);
If Strtofloat(Label3.Caption)>500 then begin
Form1.Color:= clred;
Habe gestern angefangen.
Wäre echt nett.
Danke

Geändert von MrSpock (25. Feb 2011 um 20:35 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#7

AW: Rechner programmieren

  Alt 25. Feb 2011, 20:49
Woher kommen die Werte von a und b?
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat
Tytomik

Registriert seit: 25. Feb 2011
24 Beiträge
 
#8

AW: Rechner programmieren

  Alt 25. Feb 2011, 20:54
ja das sind die variablen und ich habe alles jetzt in Real zahlen gemacht es geht auch alles nr ich versteh nicht ganz wie ich in dem teil das frac anwänden muss.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#9

AW: Rechner programmieren

  Alt 25. Feb 2011, 20:58
Der Anfang hat jetzt aber grundsätzlich erstmal nix mit Programmieren zu tun, sondern mit Mathematik.

Ergebnis = Dividend / Divisor
ganze_Zahl = Teil_vor_dem_Komma_vom_Ergebnis
Rest = Teil_nach_dem_Komma_vom_Ergebnis * Divisor
oder
Rest = Dividend - ganze_Zahl

Und nun muß man das nur noch in Quellcode umwandeln.
Teil_vor_dem_Komma = Trunc
Teil_nach_dem_Komma = Frac

Deine Lösungen sind nun ganze_Zahl und Rest.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Tytomik

Registriert seit: 25. Feb 2011
24 Beiträge
 
#10

AW: Rechner programmieren

  Alt 25. Feb 2011, 21:18
aber so wie ich es jetzt verstanden habe müsste es doch so sein :

procedure TForm1.Button6Click(Sender: TObject);
begin
Label4.caption:= floattostr(c);
c:=a/b-trunc;

end;

Aber das ist doch falsch.
Danke für die hilfe.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz