ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
489
489
EMPFEHLEN
-
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
-
05.02.07 22:01 #2
Wie sieht denn dein Vergleich aus ?
Eventuell ist dein Vergleich nicht korrekt.Visit shadowmasta
-
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
-
06.02.07 11:02 #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.
-
Ist das nicht durch StrToInt realisiert? Wie lautet die Alternative dazu?
-
06.02.07 18:38 #6
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) {} ...
mfgVisit shadowmasta
-
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 {...}
mfgnoch 'n bischen Werbung in eigener Sache: www.ice-only.de
-
Vielen Dank an Online-Skater, CSANecromancer und Supa für eure Beiträge - das Programm läuft!
Spiesser
Ähnliche Themen
-
Problem beim Vergleich zweier Zahlen
Von Pott-Taucher im Forum PHPAntworten: 9Letzter Beitrag: 17.04.05, 17:11 -
Focus bei Edit-Feldern
Von wat im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 05.03.05, 18:33 -
in edit nur zahlen rein
Von Kyrius im Forum Borland CBuilder und VCLAntworten: 4Letzter Beitrag: 16.09.04, 15:57 -
Excel: Vergleich und Index, wobei auch vergleich auf kleiner als!
Von sdh im Forum Office-AnwendungenAntworten: 0Letzter Beitrag: 01.06.04, 14:04 -
ARRAY von edit Feldern
Von znysk im Forum Delphi, Kylix, PascalAntworten: 1Letzter Beitrag: 26.02.02, 15:47





Zitieren
Login






