Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   XML (https://www.delphipraxis.net/46-xml/)
-   -   Delphi Verschachtelte Algorhytmen (https://www.delphipraxis.net/158541-verschachtelte-algorhytmen.html)

JuPi2904 21. Feb 2011 18:29

Verschachtelte Algorhytmen
 
Hallo Forum Mitglieder,
ich brauche euren Rat in verschachtelten Algorhytmen. Wir haben in der Schule als Hausaufgabe aufbekommen, einen Rabbatrechner zu programmieren, der in einem bestimmten Intervall von der Stückanzahl (Bsp.: von 100 bis 500 Stück - 5%Rabatt). Leider fehlt mir dazu ein Quelltext, wie ich das machen soll.
Bitte helft mir.
Schon mal Danke im voraus JuPi::)

hier der Quelltext:

procedure TForm1.Button1Click(Sender: TObject);
var stuck, preis, zsumme, rabatt, rsumme, endsumme : Real;
begin
stuck:=StrToFloat(Edit1.Text);
preis:=StrToFloat(Edit2.Text);

rabatt:=0;

if 0<=stuck<100 then rabatt:=0
if 100<=stuck<500 then rabatt:=0.05
if 500<=stuck<=1000 then rabatt:=0.10
if 1000<=stuck<=1500 then rabatt:=0.15
if 1500<=stuck<2000 then rabatt:=0.20
if 2000<=stuck then rabatt:=0.30;

zsumme:=stuck*preis;
rsumme:=zsumme*rabatt;
endsumme:=zsumme-rsumme;

Edit3.Text:=FloatToStr(zsumme);
Edit4.Text:=FloatToStr(rabatt);
Edit5.text:=FloatToStr(rsumme);
Edit6.Text:=FloatToStr(endsumme);


end;

end.

himitsu 21. Feb 2011 18:54

AW: Verschachtelte Algorhytmen
 
Zitat:

Bitte helft mir.
Um zu helfen fehlt uns eine Fehlerbeschreibung, wenn wir nicht wissen was nicht geht, können wir auch nicht helfen das zu beheben.

Ansonsten schonmal ein paar Kleinigkeiten:

Für Quelltexte gibt es hier passende Code-Tags, wie z.B. [delphi] (der Button mit dem roten Delphi-Helm).
Zitat:

Delphi-Quellcode:
if 0<=stuck<100 then rabatt:=0

Delphi-Quellcode:
if (0 <= stuck) and (stuck < 100) then rabatt:=0
.
dann fehlen in dem Code einige
Delphi-Quellcode:
;
oder ein paar
Delphi-Quellcode:
else
.

Luckie 21. Feb 2011 20:12

AW: Verschachtelte Algorhytmen
 
Zitat:

Zitat von JuPi2904 (Beitrag 1083285)
Leider fehlt mir dazu ein Quelltext,

Da ist doch die Fehlerbeschreibung.

hans ditter 21. Feb 2011 21:15

AW: Verschachtelte Algorhytmen
 
Versteh ich als Aufforderung einen fertigen Quelltext hier abzuliefern... und das verstösst hier mindestens gegen die Grundeinstellung.
Ansonsten konnte ich das Problem auch nicht ganz erkennen, ausser dass er keinen Quelltext zu seinem Programm hat.
Auch der Sinn des Programms entzieht sich meiner Logik. Wenn ich das richitg vestanden hab, dann soll er ein Programm entwerfen, dass in einem Intervall I von einer steigenden Gesamtmenge einen konstanten Rabatt R abziehen soll.
Was jedoch der Code-Snippet mit dem Ganzen zu tun hat... auch nicht in meinem Verständnisbereich...:

EDIT:
Ah... mir ist glaub ich grad ein Licht aufgegangen!! :coder2:
Er setzt vorher über die Gesamtmenge den Rabatt fest und rechnet dann den Rabatt runter... :!:

Aber wo ist dann dein Problem? Du hast dann doch schon den Quelltext?!:shock:

LG, hans ditter

Bummi 21. Feb 2011 22:32

AW: Verschachtelte Algorhytmen
 
ich denke hier fehlen nur ein AND und ein Semikolon, bzw. ein else
Code:
if 500<=stuck<=1000 then rabatt:=0.10
-->
Delphi-Quellcode:
if 500<=stuck and stuck<=1000 then rabatt:=0.10;
oder
Delphi-Quellcode:
if 500<=stuck and stuck<=1000 then rabatt:=0.10 
ELSE if ....

Sir Rufo 22. Feb 2011 00:10

AW: Verschachtelte Algorhytmen
 
Statt (mal abgesehen von den formalen Fehlern)
Delphi-Quellcode:
rabatt:=0;

if 0<=stuck<100 then rabatt:=0
if 100<=stuck<500 then rabatt:=0.05
if 500<=stuck<=1000 then rabatt:=0.10
if 1000<=stuck<=1500 then rabatt:=0.15
if 1500<=stuck<2000 then rabatt:=0.20
if 2000<=stuck then rabatt:=0.30;
besser umgedreht abfragen
Delphi-Quellcode:
if stuck >= 2000 then Rabatt := 0.30
else if stuck >= 1500 then Rabatt := 0.20
else if stuck >= 1000 then Rabatt := 0.15
else if stuck >=  500 then Rabatt := 0.10
else if stuck >=  100 then Rabatt := 0.05
else Rabatt := 0;
weniger tippen, besser lesen

Luckie 22. Feb 2011 00:21

AW: Verschachtelte Algorhytmen
 
Und noch schöner wird es mit case. ;)

BUG 22. Feb 2011 00:28

AW: Verschachtelte Algorhytmen
 
Zitat:

Zitat von Luckie (Beitrag 1083354)
Und noch schöner wird es mit case. ;)

:shock: Da bin ich ja gespannt ... dir ist schon aufgefallen, dass das Ungleichungen sind?

Luckie 22. Feb 2011 00:46

AW: Verschachtelte Algorhytmen
 
Wenn man das hat:
Delphi-Quellcode:
if 100<=stuck<500 then
kann man doch das
Delphi-Quellcode:
case 100..500 of
daraus machen. Es handelt sich doch um einen Bereich. Oder was habe ich jetzt übersehen?

Sir Rufo 22. Feb 2011 00:58

AW: Verschachtelte Algorhytmen
 
öh du meist wohl eher
Delphi-Quellcode:
100..499

Luckie 22. Feb 2011 01:17

AW: Verschachtelte Algorhytmen
 
Kleinigkeiten! Dafür sind die Programmierer zuständig.

BUG 22. Feb 2011 01:20

AW: Verschachtelte Algorhytmen
 
@Luckie: Sorry, diese Möglichkeit habe ich total vergessen gehabt.

Sir Rufo 22. Feb 2011 01:25

AW: Verschachtelte Algorhytmen
 
Und trotz allem ist das Case hier schlechter wartbar, da immer an 2 Stellen Änderungen erforderlich wären.

Luckie 22. Feb 2011 01:26

AW: Verschachtelte Algorhytmen
 
@BUG: Keine Ursache. Aber du hast es doch geschafft mich zumindest kurz zu verunsichern. ;)
@My Lord: Aber ich finde es übersichtlicher, weil man den Bereich sofort sieht.

JuPi2904 22. Feb 2011 18:14

AW: Verschachtelte Algorhytmen
 
So ich bedanke mich ersteinaml für alle Antworten.
Um noch mal ein paar Fragen zu beantworten, ich will keinen fertigen Quelltext, sondern ich möchte die Struktur wissen, wie man so etwas generell programmiert.
Ich habe jetzt mal die Variante mit "and" probiert, wo allerdings ein Fehler aufgetreten ist: [Fehler] Unit1.pas(61): Operator ist auf diesen Operandentyp nicht anwendbar

Wenn ich dann ein "else" davor setze treten noch andere Fehler auf und mit der variante "case", die kenne ich leider noch nicht und weiß nicht wie ich sie umsetzen soll.

Hier mein Quelltext:

if 0<=stuck and stuck<100 then rabatt:=0;
if 100<=stuck and stuck<500 then rabatt:=0.05;
if 500<=stuck and stuck<=1000 then rabatt:=0.10;
if 1000<=stuck and stuck<=1500 then rabatt:=0.15 ;
if 1500<=stuck and stuck<2000 then rabatt:=0.20 ;
if 2000<=stuck then rabatt:=0.30;


Würde mich um eure Hilfe sehr freuen.
Mfg JuPi.

Deep-Sea 22. Feb 2011 18:29

AW: Verschachtelte Algorhytmen
 
Zitat:

Zitat von JuPi2904 (Beitrag 1083627)
Ich habe jetzt mal die Variante mit "and" probiert, wo allerdings ein Fehler aufgetreten ist [...]

Entweder du nutzt die zweite Variante aus Post #6 von Sir Rufo oder du schaust dir das Post #2 von himitsu noch einmal genauer an, dann wirst du feststellen, dass du Klammern und else-Anweisungen vergessen hast.

JuPi2904 22. Feb 2011 18:46

AW: Verschachtelte Algorhytmen
 
Es funktioniert...
Echt noch mal danke für eure Hilfe und danke für den Hinweis.
Dieses Forum ist echt zu empfehlen, schon mein 2. problem wurde gelöst. Ihr seid echt spitze!!! :thumb:

Der Quelltext lautet:

if (0<=stuck) and (stuck<100) then rabatt:=0;
if (100<=stuck) and (stuck<500) then rabatt:=0.05;
if (500<=stuck) and (stuck<=1000) then rabatt:=0.10;
if (1000<=stuck) and (stuck<=1500) then rabatt:=0.15 ;
if (1500<=stuck) and (stuck<2000) then rabatt:=0.20 ;
if (2000<=stuck) then rabatt:=0.30;

Sir Rufo 22. Feb 2011 19:49

AW: Verschachtelte Algorhytmen
 
Bitte benutze zum Posten von Delphi-Quelltext die Delphi-Tags (sieht dann so aus)
Delphi-Quellcode:
if (0<=stuck) and (stuck<100) then rabatt:=0;
 if (100<=stuck) and (stuck<500) then rabatt:=0.05;
 if (500<=stuck) and (stuck<=1000) then rabatt:=0.10;
 if (1000<=stuck) and (stuck<=1500) then rabatt:=0.15 ;
 if (1500<=stuck) and (stuck<2000) then rabatt:=0.20 ;
 if (2000<=stuck) then rabatt:=0.30;
und nicht die "B"rüll-Tags
Zitat:

Zitat von JuPi2904 (Beitrag 1083635)
Es funktioniert...
Echt noch mal danke für eure Hilfe und danke für den Hinweis.
Dieses Forum ist echt zu empfehlen, schon mein 2. problem wurde gelöst. Ihr seid echt spitze!!! :thumb:

Der Quelltext lautet:

if (0<=stuck) and (stuck<100) then rabatt:=0;
if (100<=stuck) and (stuck<500) then rabatt:=0.05;
if (500<=stuck) and (stuck<=1000) then rabatt:=0.10;
if (1000<=stuck) and (stuck<=1500) then rabatt:=0.15 ;
if (1500<=stuck) and (stuck<2000) then rabatt:=0.20 ;
if (2000<=stuck) then rabatt:=0.30;

Zitat:

Zitat von JuPi2904 (Beitrag 1083627)
So ich bedanke mich ersteinaml für alle Antworten.
Um noch mal ein paar Fragen zu beantworten, ich will keinen fertigen Quelltext, sondern ich möchte die Struktur wissen, wie man so etwas generell programmiert.

Wurde auch schon erwähnt, das deine Art sehr unübersichtlich und dadurch fehleranfällig ist


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:49 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