Einzelnen Beitrag anzeigen

Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#5

Re: If Abfrage funktioniert nicht korrekt

  Alt 13. Dez 2006, 10:28
Zitat von Problemmacher:
dann wird überprüft ob Zahl1 größer ist als Zahl2 (damit eine Teilung
nie < 0 ergibt) ist. Ebenso wird dann geprüft ob die Teilung der
Zahl1 durch Zahl2 einen Rest von 0 ergibt. Im Kontext zur der
Abfrage davor will ich also nur das ganzzahlige Werte über 0
entstehen können.
Falls diese gewünschten Werte nicht vorliegen sollen sie eben
per repeat until erzeugt werden.

Ich wollte euch fragen wieso ich allerdings trotzdem immer noch
Rechnungne wie 2 / 8 etc. rausbekomme?
Allgemeine Hinweise:
  • Zunächst einmal erwarte ich, dass bei Deinem Verfahren eine Teilung nie < 1 ergibt (nicht < 0).
  • Dann nehme ich an, dass Du in Deinem Code ein IF nicht kopiert hattest.
  • Außerdem scheint es mir bei solchen Verschachtelungen besser zu sein, zusätzlich mit begin..end und Klammern zu arbeiten (das aber nur wegen der Optik, also der besseren Lesbarkeit).
Entscheidend ist Folgendes:
  1. Du willst als erstes prüfen, ob Zahl1 > Zahl2 ist. Das ist bei Deiner Frage "2/8" falsch.
  2. Welche Maßnahme hast Du dafür vorgesehen??? Nichts! Denn dafür gibt es keinen else-Block.
  3. Du willst Deine Bedingung am Anfang erfüllt sehen; und wenn nicht dann... Das ist genau die Situation für Delphi-Referenz durchsuchenwhile-Anweisungen:
Delphi-Quellcode:
IF Operator = '/then
begin
  // Verneinung Deiner Abfrage:
  // IF NOT ((Zahl1 > Zahl2) AND (Zahl1 MOD Zahl2 = 0))
  while ((Zahl1 < Zahl2) OR (Zahl1 MOD Zahl2 = 0)) then
  begin
    Zahl1 := ZufallsZahl(Radiobox);
    Zahl2 := ZufallsZahl(Radiobox);
  end;
end;
Zusatzbemerkungen:
1. Maja Jessica hat zurecht darauf hingewiesen, dass in der Funktion ZufallsZahl() der default-Wert die Ausgangszahl ist, aber keine neu erzeugte Zahl.
2. Ist bei Deinen Prüfungen sichergestellt, dass Zahl2 ungleich Null ist?

Viel Erfolg! Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat