![]() |
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. |
AW: Verschachtelte Algorhytmen
Zitat:
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) and (stuck < 100) then rabatt:=0
dann fehlen in dem Code einige
Delphi-Quellcode:
oder ein paar
;
Delphi-Quellcode:
.
else
|
AW: Verschachtelte Algorhytmen
Zitat:
|
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 |
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:
oder
if 500<=stuck and stuck<=1000 then rabatt:=0.10;
Delphi-Quellcode:
if 500<=stuck and stuck<=1000 then rabatt:=0.10
ELSE if .... |
AW: Verschachtelte Algorhytmen
Statt (mal abgesehen von den formalen Fehlern)
Delphi-Quellcode:
besser umgedreht abfragen
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;
Delphi-Quellcode:
weniger tippen, besser lesen
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; |
AW: Verschachtelte Algorhytmen
Und noch schöner wird es mit case. ;)
|
AW: Verschachtelte Algorhytmen
Zitat:
|
AW: Verschachtelte Algorhytmen
Wenn man das hat:
Delphi-Quellcode:
kann man doch das
if 100<=stuck<500 then
Delphi-Quellcode:
daraus machen. Es handelt sich doch um einen Bereich. Oder was habe ich jetzt übersehen?
case 100..500 of
|
AW: Verschachtelte Algorhytmen
öh du meist wohl eher
Delphi-Quellcode:
100..499
|
AW: Verschachtelte Algorhytmen
Kleinigkeiten! Dafür sind die Programmierer zuständig.
|
AW: Verschachtelte Algorhytmen
@Luckie: Sorry, diese Möglichkeit habe ich total vergessen gehabt.
|
AW: Verschachtelte Algorhytmen
Und trotz allem ist das Case hier schlechter wartbar, da immer an 2 Stellen Änderungen erforderlich wären.
|
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. |
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. |
AW: Verschachtelte Algorhytmen
Zitat:
|
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; |
AW: Verschachtelte Algorhytmen
Bitte benutze zum Posten von Delphi-Quelltext die Delphi-Tags (sieht dann so aus)
Delphi-Quellcode:
und nicht die "B"rüll-Tags
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:
|
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