AGB  ·  Datenschutz  ·  Impressum  







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

problem baue endlosschleife

Ein Thema von pagan1900 · begonnen am 5. Jun 2006 · letzter Beitrag vom 6. Jun 2006
Antwort Antwort
pagan1900

Registriert seit: 27. Mär 2006
25 Beiträge
 
#1

problem baue endlosschleife

  Alt 5. Jun 2006, 15:23
folgendes:
----------
n bekomme ich vom benutzer übergeben
sprich ich habe eine radiogroup, in der festgelegt ist, das
wenn der benutzer den radiobutton an indexstelle 0 anklickt

case n.ItemIndex of
(n beduetet anzahl der knoten!)
0: n:=2; m_max:=2; min_m:=1;
1: n:=3; min_m:=2; m_max:=5;
2: n:=4; min_m:=4; m_max:=7;
3: n:=5; min_m:=5; m_max:=8;
4: n:=6; min_m:=6; m_max:=11;
5: n:=7; min_m:=7; m_max:=12;
6: n:=8; min_m:=8; m_max:=14;

daher bekomme ich das n her! (später soll es wenn der benutzer
den erstenlevel (2knotiger graph) erfolgreich bestanden hat automatisch sich erhöhen (level um level).)


Delphi-Quellcode:
(*-----Bestimmen--von--m-----------------------------*)
 function m_bestimmen(min_m:integer; m_max:integer):integer;
 var local:integer;
  begin
    repeat
    local:=random(m_max+1);
    until local>=min_m;
    result:=local;
  end;
hier bestimme ich die pfeildaten:
NUR das problem ich produziere ständig eine endlosschleife an dieser stelle
siehe folgenden quelltextausschnitt!

Kann mir jemand bei diesem problem helfen ?
freue mich auf eure antwort!

Delphi-Quellcode:
 procedure a_b_Pfeilnur1mal(a,b:TPfeil;var a1,b1:integer);
 var locali:integer;
     notOK:boolean;
 begin
   notok:=false;
   repeat
     repeat
       a1:=random(n)+1;
       b1:=random(n)+1;
     until a1<>b1; // Neuen Vektor finden

     for locali:= 1 to m do
      begin
        NotOK:=((a1 = a[locali]) and (b1 = b[locali])) or // V1 = V[I] oder
               ((b1 = a[locali]) and (a1 = b[locali])); // V1 = -V[I]
        if NotOK then break;
            // Wenn NotOK, also der Vektor schon vorhanden ist,
            // dann Abbruch der FOR-Schleife.
      end;

   until not(NotOK);
         // Wenn die FOR-Schleife ganz durchlaufen wird und immer gilt:
         // NotOK = false ( Razz ), dann ist der neue Vektor noch nicht vorhanden.
         // Also: Ende bei not(NotOK);
 end;
und hier soll er rein:

Delphi-Quellcode:
procedure TfrmUebung.Button1Click(Sender: TObject);
  var
  x1,y1,x2,y2:integer;
  locali,localj:integer;
  a1,b1:integer;
  px1,px2:integer;
  Gewichtung:string;
  begin
    m:=m_bestimmen(min_m,m_max); //anzahl der Pfeile wird festgestellt

    //wertelegen(Anf,Ende,Kosten);

    for locali:= 1 to m do
     begin
      a_b_Pfeilnur1mal(Anf,Ende,a1,b1);
      Anf[locali]:=(a1);
      Ende[locali]:=(b1);
      Kosten[locali]:=Kosten_bestimmen;
     end;
   
  {Eingaben}
    for locali:=1 to m do
     begin
       px1:=Anf[locali];
       px2:=Ende[locali];
       Gewichtung:=inttostr(Kosten[locali]);
       with imgGraph,imgGraph.Canvas do
        begin
          Font.Name := 'Arial';
          Font.Height := 30;
// ** Einzelner Pfeil
          X1 := (Kx[px1]);
          Y1 := (Ky[px1]);
          X2 := (Kx[px2]);
          Y2 := (Ky[px2]);
          setzeKnoten(Canvas,Kx,Ky,KRadius,Startknoten);
          Brush.Color := clBlack;
          ZeichneVerbindungspfeil(Canvas,x1,y1,x2,y2,KRadius,Offset);
          pfeilbewertung (x1,y1,x2,y2,KRadius,Offset,Gewichtung,Canvas);
        end;
     end;
 end;
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: problem baue endlosschleife

  Alt 5. Jun 2006, 15:44
Bitte benutze die [delphi]-Tags für Delphi-Code.

Wenn ich das richtig sehe heissen sowohl die Variable als auch die RadioGroup beide "n"?
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  Mit Zitat antworten Zitat
pagan1900

Registriert seit: 27. Mär 2006
25 Beiträge
 
#3

Re: problem baue endlosschleife

  Alt 5. Jun 2006, 17:24
ups falsch geschrieben, nein die radiogroup hat natürlich einen anderen namen!
ich wollte damit nur verdeutlichen woher ich n,max_m, m_min habe!
das wichtigste ist, wie löse ich die endloschleife auf!

ich will das das programm mir werte generiert, und mit denen einen graphen zeichnet

ich muss also, da ein pfeil bei mir aus 2werten besteht, die in arrays abgespeichert werden
Anf
Ende
(und der gewichtung wird seperat generiert)
diese werden zum einen zum rechnen und zum anderen stellen diese beiden werte 2 punkte da die dann mit vektorpfeilen verbunden werden.
das problem welches da besteht, da random irgendwelche werte produziert
und das hier für beide werte, kann es sein,das folgendes passieren kann

Anf: 1|2|3|4|1
ende 2|1|2|1|2
dises währe zwar noch nicht problematisch, aber nun
generiere ich für jeden "pfeil" die gewichtung welche zum berechnen benötigt werden!

Anf: 1|2|3|4|1
ende 2|1|2|1|2
kosten 1|2|9|8|5

und da ist nun das problem welches ich versucht habe aufzulösen!
2x ein pfeil 1->2,aber mit unterschiedlichen kosten!
dieses muss aufgelöst werden, sprich jder pfeil der generiert wird darf im array nur 1x vorkommen!
  Mit Zitat antworten Zitat
Benutzerbild von Mystic
Mystic

Registriert seit: 18. Okt 2003
Ort: Flerzheim
420 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: problem baue endlosschleife

  Alt 6. Jun 2006, 04:40
Warum machst du die Bestimmung nicht so?
Delphi-Quellcode:
(*-----Bestimmen--von--m-----------------------------*)
function m_bestimmen(min_m:integer; m_max:integer):integer;
begin
  // Liefert Zufallszahl m mit min_m >= m <= m_max
  result := random(m_max - min_m + 1) + min_m;
end;
Zu der Endlosschleife:

Delphi-Quellcode:
NotOK := ((a1 = a[locali]) and (b1 = b[locali])) or // V1 = V[I] oder
         ((b1 = a[locali]) and (a1 = b[locali])); // V1 = -V[I]
Sollte das dann nicht so heissen?

Delphi-Quellcode:
NotOK := ((a1 = a[locali]) and (b1 = b[locali])) or // V1 = V[I] oder
         ((a1 = -a[locali]) and (b1 = - b[locali])); // V1 = -V[I]
Ansonsten testest du ja im zweiten Fall auf den Vektor, der an f(x)=x gespiegelt ist, oder sehe ich das falsch?
Jan Steffens
Der Fachwortgenerator - 100% Schwachsinn --- Der UPnP Router Manager - Kommentare erwünscht!
  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 04:22 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