AGB  ·  Datenschutz  ·  Impressum  







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

while mit 3 Bedingungen - Logik-Problem

Ein Thema von apm · begonnen am 7. Mär 2012 · letzter Beitrag vom 8. Mär 2012
Antwort Antwort
apm

Registriert seit: 22. Nov 2010
28 Beiträge
 
#1

while mit 3 Bedingungen - Logik-Problem

  Alt 7. Mär 2012, 21:10
Delphi-Version: 2009
Hi!
Ich stell mich gerade zu glatt an was die Logik angeht. Ich habe eine while mit drei Bedingungen die ALLE erfüllt sein müssen bevor das Programm weiterspringen darf.

Delphi-Quellcode:
    while (i_arr_global_Ausgabe_Kat_Art_Schleifenwert <> Length(i_arr_global_Ausgabe_Kat_Art))
    and (i_arr_global_Ausgabe_Kat_Schleifenwert <> Length(i_arr_global_Ausgabe_Kat))
    and (i_arr_global_Ausgabe_Sehenswue_Schleifenwert <> Length(i_arr_global_Ausgabe_Sehenswue)) do
    begin
      ausgabe_i_arr_global_ausgabe_kat_art;
      ausgabe_i_arr_global_ausgabe_kat;
      ausgabe_i_arr_global_ausgabe_sehenswue;
    end;
Das sind jeweils Integer und Arrays. Ich bekomms nur hin, wenn ich eine der drei Sachen prüfen. Und verschachteln geht auf keinen Fall.
  Mit Zitat antworten Zitat
silver-moon-2000

Registriert seit: 18. Feb 2007
Ort: Schweinfurt
170 Beiträge
 
Delphi XE Professional
 
#2

AW: while mit 3 Bedingungen - Logik-Problem

  Alt 7. Mär 2012, 21:25
Hi,

Du willst also, wenn ich Dich richtig verstanden habe:
Die while Schleife darf erst verlassen werden, wenn also drei Schleifenwerte = Length(array) sind?

Dann sollte es mit "or" statt dem "and" funktionieren.

Delphi-Quellcode:
while (a_schleifenwert <> Length(a)) or
              (b_schleifenwert <> Length(b)) or
              (c_schleifenwert <> Length(c)) then
Wenn Du mit "and" verknüpfst, wird die bedingungskette ja schon "false", sobald einer der drei Teile zutrifft, die anderen Beiden Teile aber noch nicht.

Mit "or" werden diese sozusagen unabhängig voneinander überprüft und die Gesamtbedingung wird false, sobald alle drei zutreffen:

Laut den De Morgan'schen Regeln gilt:
Code:
((a_s <> a) or (b_s <> b) or (c_s <> c)) == ((a_s = a) and (a_s = a) and (a_s = a))
Kann aber auch sein, dass ich Dich völlig missverstanden habe...

[edit]
Yay, 111 Posts, Schnapszahl, meine Güte, bin ich guuut!
Tobias
Bitte nicht hauen , ich weiß es nicht besser

Geändert von silver-moon-2000 ( 7. Mär 2012 um 21:35 Uhr)
  Mit Zitat antworten Zitat
apm

Registriert seit: 22. Nov 2010
28 Beiträge
 
#3

AW: while mit 3 Bedingungen - Logik-Problem

  Alt 7. Mär 2012, 21:32
Wie einfach es auch sein kann!
Ich mach lieber Feierabend heut! THX
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: while mit 3 Bedingungen - Logik-Problem

  Alt 8. Mär 2012, 01:04
@Tobias: Ich glaub bei deinem Morgan fehlt noch ein wichtiges NOT.

Ach ja, kann es sein, daß daß du eigentlich ein < meinst und nicht <> ?

Was genau soll denn geprüft werden?
Versuch deine Bedingungen mal als Satz zu definieren.
Erstmal alle drei Dinge einzeln und versuch es dann in einem Satz zusammenzusügen.

Wiederhole "kat_art" so lange, wie ... ist.
oder
Wiederhole "kat_art" so lange, wie ... nicht ist.
oder
Wiederhole ... so lange bis ... ist.
...


Vorallem hattest du etwas wichtges vergessen zu erwähnen, also in diner Fehlerbeschreibung.
Wie du es verknüpft haben wolltest.

while (i_arr_global_Ausgabe_Kat_Art_Schleifenwert < Length(i_arr_global_Ausgabe_Kat_Art)) ... .
oder
while (i_arr_global_Ausgabe_Kat_Art_Schleifenwert <= High(i_arr_global_Ausgabe_Kat_Art)) ... .
Denn wenn mal, durch einen "Fehler" i_arr_global_Ausgabe_Kat_Art_Schleifenwert größer ist, dann würde dir die Auswirkung bestimmt nicht gefallen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 8. Mär 2012 um 01:07 Uhr)
  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 09:23 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