tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
489
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    spiesser spiesser ist offline Mitglied
    Registriert seit
    Feb 2007
    Beiträge
    11
    Hallo,

    bin dabei, ein Programm mit dem Borland Builder zu erstellen mit dem Ziel, einen AVL-Baum darzustellen! Der Nutzer gibt dabei beliebige natürliche Zahlen in ein Edit-Fenster ein, diese sollen vom Programm in korrekter Form in einen Baum (bestehend aus weiteren Edit-Fenstern) angeordnet werden!

    Soweit funktioniert alles, aber sobald die Eingaben einstellig bzw. dreistellig sind, gibt es Probleme! (Beispiel: 23 als Wurzel, nun soll die 5 eingefügt werden --> mein Programm fügt die 5 rechts unter die 23 ein, da 2 < 5) --> ich denke zumindest, dass es daran liegt, dass die Werte vom letzten Zeichen an verglichen werden!

    Was muss ich tun, damit auch ein-/dreistellige Werte korrekt eingefügt werden?

    Würde mich über eine Antwort sehr freuen,

    spiesser
     

  2. #2
    Avatar von Online-Skater
    Online-Skater Online-Skater ist offline Mitglied Brillant
    Registriert seit
    Sep 2004
    Ort
    Rostock
    Beiträge
    891
    Wie sieht denn dein Vergleich aus ?
    Eventuell ist dein Vergleich nicht korrekt.
     

  3. #3
    spiesser spiesser ist offline Mitglied
    Registriert seit
    Feb 2007
    Beiträge
    11
    So ungefähr sieht der Vergleich aus:

    StrToInt(Edit1->Text);
    StrToInt(Edit2->Text);
    StrToInt(Edit3->Text);
    StrToInt(Edit16->Text); //in diesem Edit-Feld erfolgt Eingabe

    if (Edit1->Text=="0")
    {
    Edit1->Text=Edit16->Text;
    Edit1->Visible=true;
    }
    else if (Edit16->Text<Edit1->Text)
    {
    if (Edit2->Text=="0")
    {
    Edit2->Text=Edit16->Text;
    Edit2->Visible=true;
    }
    }
    else if (Edit16->Text>Edit1->Text)
    {
    if (Edit3->Text=="0")
    {
    Edit3->Text=Edit16->Text;
    Edit3->Visible=true;
    }
    }

    Was ist falsch?

    spiesser
     

  4. #4
    Registriert seit
    Mar 2004
    Beiträge
    441
    So weit ich das sehe, liegt der Fehler darin, daß du direkt die Strings (Editn->Text) mit einander vergleichst. Die Strings werden nämlich nicht im Hintergrund implizit mal kurz in Zahlen umgerechnet, sondern auch wirklich als Strings verglichen.
    Somit ist der String "5" (gemäß des ersten ASCII-Zeichens) immer größer als der String "2476487568".
    Wenn der Vergleich korrekt stattfinden soll, musst du vor dem Vergleich die Strings in wirkliche Zahlen (z.B. Integers) umwandeln.
     

  5. #5
    spiesser spiesser ist offline Mitglied
    Registriert seit
    Feb 2007
    Beiträge
    11
    Ist das nicht durch StrToInt realisiert? Wie lautet die Alternative dazu?
     

  6. #6
    Avatar von Online-Skater
    Online-Skater Online-Skater ist offline Mitglied Brillant
    Registriert seit
    Sep 2004
    Ort
    Rostock
    Beiträge
    891
    Nein du musst es einer Variablen zuweisen und dann mit den Variablen arbeiten
    Code cpp:
    1
    2
    3
    4
    5
    6
    
    int a = StrToInt(Edit1->Text)
    int b = StrToInt(Edit2->Text)
     
    if (a == 0) {}
    if (a < b) {}
    ...

    mfg
     

  7. #7
    Supa Supa ist offline Mitglied Gold
    Registriert seit
    Jul 2004
    Ort
    Velbert
    Beiträge
    160
    Du musst dir vor Augen halten, das StrToInt() eine Funktion ist, die ein Wert zurück liefert (in diesem Fall ein Integer Wert).

    Die Funktion ändert nicht den Wert, der eingegeben wird, sondern gibt einen neuen Wert zurück mit dem Du dann arbeiten kannst. Du kannst den Wert wie schon gesagt, entweder speichern, oder direkt verarbeiten.

    d.h. du brauchst nicht zwangsläufig Variablen zu definieren. Du kannst die Umwandlung einfach in den Vergleich packen:
    Code :
    1
    2
    
    if(StrToInt(Edit1->Text) > StrToInt(Edit2->Text)) // Vergleich, zweier INTEGER Werte
    {...}

    mfg
     
    noch 'n bischen Werbung in eigener Sache: www.ice-only.de

  8. #8
    spiesser spiesser ist offline Mitglied
    Registriert seit
    Feb 2007
    Beiträge
    11
    Vielen Dank an Online-Skater, CSANecromancer und Supa für eure Beiträge - das Programm läuft!

    Spiesser
     

Ähnliche Themen

  1. Problem beim Vergleich zweier Zahlen
    Von Pott-Taucher im Forum PHP
    Antworten: 9
    Letzter Beitrag: 17.04.05, 17:11
  2. Focus bei Edit-Feldern
    Von wat im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 05.03.05, 18:33
  3. in edit nur zahlen rein
    Von Kyrius im Forum Borland CBuilder und VCL
    Antworten: 4
    Letzter Beitrag: 16.09.04, 15:57
  4. Antworten: 0
    Letzter Beitrag: 01.06.04, 14:04
  5. ARRAY von edit Feldern
    Von znysk im Forum Delphi, Kylix, Pascal
    Antworten: 1
    Letzter Beitrag: 26.02.02, 15:47