AGB  ·  Datenschutz  ·  Impressum  







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

schleife

Ein Thema von matze222 · begonnen am 11. Apr 2008 · letzter Beitrag vom 15. Apr 2008
Antwort Antwort
matze222

Registriert seit: 8. Mär 2008
33 Beiträge
 
#1

schleife

  Alt 11. Apr 2008, 15:40
hi leute ich wüsste gerne wie ich ne schleife machen kann...
ich will nämlich das er etwas nachprüft und zwar immerwieder solange bis er bei 0 ist.
ich habe nämlich ein programm geschrieben in dem ich geld "einwerfe" und somit bezahle und nun krieg ich da eine ausgabe raus, die ich gern in die einzelnen münzen trennen würde...
bisher hab ich das so gemacht:
Delphi-Quellcode:
if (c>50) then
        edit5.Text:=floattostr(e+1);
        d:=(d-50);
        if (c>20) and(c<50) then
        edit6.Text:=floattostr(e+1);
        d:=(d-20);
        if (c>10) and(c<20) then
        edit7.Text:=floattostr(e+1);
        c:=(c-10);
        if (c>5) and(c<10) then
        edit8.Text:=floattostr(e+1);
        c:=(c-5);
        if (c>2) and(d<5) then
        edit9.Text:=floattostr(e+1);
        c:=(c-2);
        if (c>1) and(c<2) then
        edit10.Text:=floattostr(e+1);
        c:=(c-1);
        if (c>0.5) and(c<1) then
        edit11.Text:=floattostr(e+1);
        c:=(c-0.5);
        if (c>0.2) and(c<0.5) then
        edit12.Text:=floattostr(e+1);
        c:=(c-0.2);
        if (c>0.1) and(c<0.2) then
        edit13.Text:=floattostr(e+1);
        c:=(c-0.1);
und der scheint das irgendwie nicht richtig auszuführen...
oder hat emand nen anderen einfacheren oder besseren vorschlag?
thx im vorraus
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#2

Re: schleife

  Alt 11. Apr 2008, 15:43
Kopfschleife:
Delphi-Quellcode:
while Bedingung do
  //Code
Fußschleife:
Delphi-Quellcode:
repeat
  //Code
until Bedingung;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
soulies

Registriert seit: 9. Dez 2005
234 Beiträge
 
#3

Re: schleife

  Alt 11. Apr 2008, 15:47
hoi,

vllt. gehts so eleganter :

Delphi-Quellcode:
 case c of
   50..100 : ...
   20..50 : ...
   10..20 : ...
    5..10 : ...
    2..5 : ...
        1 : ...
  end;
  Mit Zitat antworten Zitat
uwewo

Registriert seit: 14. Jul 2004
Ort: Karlsruhe
479 Beiträge
 
Delphi 2006 Professional
 
#4

Re: schleife

  Alt 11. Apr 2008, 15:47
Schau mal ind OH nach CASE, es ist übersichtlicher als soviele IF Abfragen.

zum Thema Schleife gibt es mehrere Möglichkeiten

Delphi-Quellcode:
repeat
  hier die CASE Anweisung
until c=0;
Delphi-Quellcode:
While c < 0 do
  Begin
   hier die CASE Anweisung
  end;
oder du zählst c solange hoch bis Dein Anfangswert erreicht ist.
Uwe
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#5

Re: schleife

  Alt 11. Apr 2008, 15:49
Uwe, muss es nicht heißenwhile c > 0 do ?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#6

Re: schleife

  Alt 11. Apr 2008, 16:03
Zitat von matze222:
Delphi-Quellcode:
[...]
if (c>10) and(c<20) then
  edit7.Text:=floattostr(e+1);
c:=(c-10);
if (c>5) and(c<10) then
  [...]
2 Fragen dazu:
1.) Meinst wirklich
Delphi-Quellcode:
if (c>10) and(c<20) then
  edit7.Text:=floattostr(e+1);
c:=(c-10);
oder eher
Delphi-Quellcode:
if (c>10) and(c<20) then
begin
  edit7.Text:=floattostr(e+1);
  c:=(c-10);
end;
?

2.) Während deiner Abrfragen wird c schon verändert. Ich bin mir nicht sicher ob das das ist, was du willst.
Soll das Programm je nachdem, wie groß c ist, etwas machen, oder soll is (wie du es im moment hast) c abfragen, dann etwas mit einem edit.Text machen, dann c (oder auch mal d) verändern und dann erst die nächste abfrage starten?

Achso, und bei deinem Code darf c z.B. nicht =10 sein (du fragst einmal auf c > 10 und einmal auf c < 10 ab, aber nie = oder <= oder >=10).

Ich denke auch, dass case c of das richtige für dich ist...
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: schleife

  Alt 11. Apr 2008, 16:23
@metze222: Du hast Glück, ich habe so etwas vor nem Monat auch geschrieben und habe gerade sowieso nichts zu tun, also hab ich den Code gearde mal schnell kommentiert

1.: Eine Klasse TMuenzhaufen(ich weiß, toller Name ) mit den Eigenschaften Gesamt für den Gesamtwert, dem Array Muenzen für die Anzahl der einzelnen Münzen und der Prozedur zum trennen.
Delphi-Quellcode:
type
  TMuenzhaufen = class
    Gesamt : Integer;
      //Gesamtwert
    Muenzen: Array[0..5] of Integer;
      //Array mit den Münzen:
      //0: 50Cent, 1: 20Cent, 2: 10Cent, 3: 5Cent, 4: 2Cent, 5: 1Cent
    procedure Trennen;
  end;
2.: Die procdedure trennen, dürfte durch Kommentare eigentlich klar sein:
Delphi-Quellcode:
procedure TMuenzhaufen.Trennen;
var
  i, j: Integer;
const
  Muenze: Array[0..5] of Integer = (50, 20, 10, 5, 2, 1);
    //Array mit allen Münzen, von groß nach klein
begin
  j := 0;
    //Bei der größten Münze beginnen
  i := Gesamt;
  while i > 0 do
    //Schleife durchlaufen, solange noch Restgeld da ist
  begin
    while i >= Muenze[j] do
      //Solange mehr Geld da ist, als die aktuelle Münze wert ist, ..
    begin
      Inc(Muenzen[j]);
        //..die Anzahl der aktuellen Münze um 1 erhöhen und..
      Dec(i, Muenze[j]);
        //.. den Wert der aktuellen Münze vom Gesamtwert abziehen
    end;
    Inc(j);
      //Wenn der Gesamtwert kleiner als der Wert der aktuellen Münze ist
      //(Schleife wurde verlassen), zur nächstkleineren Münze gehen
  end;
end;

3.:Ein Beispielaufruf, in dem die Anzahl der einzelnen Münzen des Wertes aus Edit1 in Memo1 angezeigt werden:
Delphi-Quellcode:
var m:TMuenzHaufen;
begin
  m := TMuenzhaufen.Create;
  with m do
  begin
    try
      Gesamt := StrToInt(Edit1.text);
      Trennen;

      Memo1.Clear;
      Memo1.Lines.Add('50Cent-Münzen: '+IntToStr(Muenzen[0]));
      Memo1.Lines.Add('20Cent-Münzen: '+IntToStr(Muenzen[1]));
      Memo1.Lines.Add('10Cent-Münzen: '+IntToStr(Muenzen[2]));
      Memo1.Lines.Add('5Cent-Münzen: '+IntToStr(Muenzen[3]));
      Memo1.Lines.Add('2Cent-Münzen: '+IntToStr(Muenzen[4]));
      Memo1.Lines.Add('1Cent-Münzen: '+IntToStr(Muenzen[5]));
    finally
      FreeAndNil(m);
    end;
  end;
Mfg

PS.: Du solltest dir aber mal Grundlagen-Tutorials angucken, denn die Schleifen sind neben Bedingungen(If-Abfragen) so ziemlich das Grundlegenste beim Programmieren, was man auf jeden Fall kennen sollte.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
matze222

Registriert seit: 8. Mär 2008
33 Beiträge
 
#8

Re: schleife

  Alt 14. Apr 2008, 22:38
hey cool thx^^
  Mit Zitat antworten Zitat
Benutzerbild von spaxxn
spaxxn

Registriert seit: 19. Nov 2004
253 Beiträge
 
Delphi XE2 Enterprise
 
#9

Re: schleife

  Alt 15. Apr 2008, 07:42
@Fussball-Robby: Wenn du "neu" bist, dann gewöhne dir mal schnell wieder das arbeiten mit "with object do" ab.

Es Kann deutlich zur Unübersichtlichkeit im Code beitragen, z.B. wenn andere sich Codeteile ansehen und interpretieren sollen und der effektive Nutzen den man davon hat ist sowieso gleich null, ausser Bequemlichkeit natürlich
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: schleife

  Alt 15. Apr 2008, 09:07
Zitat von matze222:
hi leute ich wüsste gerne wie ich ne schleife machen kann...
Tutorials lesen oder ein Delphi-Anfängerbuch kaufen...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort


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:50 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