Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 11:13

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Strcmp vergleicht nicht?

Discussion on Strcmp vergleicht nicht? within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Belur's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
Strcmp vergleicht nicht?

Hey,

habe als Übung für die eine Klausur eine Aufgabe gemacht:
Man sollte einen Baum entwerfen der Wörer sortiert:

Hab das zuerst für Zahlen gemacht, das läuft auch gut und jetzt eben für Wörter: Das sieht bei mir so aus:

PHP Code:
/*
 
 */
#include <stdio.h>
#include <stdlib.h>

typedef struct _knoten
{
   
struct _knoten *links, *rechts;
   
char *wert;
}
knoten;

knoten *wort_neu(char *data){
    
knoten *neu malloc(sizeof(knoten));
    
neu->wert data;
    
neu->links NULL;
    
neu->rechts NULL;
    return 
neu;
}

void inorder(knoten *temp){
knoten *temp;
  if (
== NULL)
    return;
  if (
k->links != NULL)
    
inorder (k->links);
  
printf ("%s\n"k->wert);
  if (
k->rechts != NULL)
    
inorder (k->rechts);
}

void einfuegen(knoten *tempchar *data){
knoten *akt temp;

if(
strcmp(akt->wertdata)==1){
    if(
akt->links==NULL){
    
akt->links=wort_neu(data);
}else{
    
einfuegen(akt->linksdata);
}

}
if(
strcmp(akt->wertdata)==-1){
    if(
akt->rechts==NULL){
        
akt->rechts=wort_neu(data);
    }else{
     
einfuegen(akt->rechtsdata);
    }
}
}
int main(int argcchar **argv) {
    
char *worte[] = {"now""is""the""time""for""all""good",
    
"men""to""come""to""the""aid""of",
    
"their""party"};
    
knoten *wurzel wort_neu(worte[0]);
    
int i;

    for(
1sizeof(worte) / sizeof(char*); i++) {
    
einfuegen(wurzelworte[i]);
    }
    
inorder(wurzel);


Soo. Die Ausgabe ist dann:

men
now
of

Komischerweiße. Ich hab im Debugger gesehen, dass die Wörter nicht richtig verglichen werden mit strcmp also das weder die eine noch die andere If-Bedingung gilt, obwohl das eigentlich der Fall sein sollte. Er überspringt einfach beide.
(Der Fall, dass beide Strings gleich sind ist noch nicht berücksichtigt, aber die Ausgabe müsste ja tdz schon mehere Wörter enthalten).

"now" wird in den Baum aufgenommen.

Dann wird "is" verglichen mit:
PHP Code:
if(strcmp(akt->wertdata)==1){ 
und
PHP Code:
(strcmp(akt->wertdata)==-1
Keine von beiden Bedingungen stimmt aber. Obwohl die erste stimmen müsste, da "now" ja größer ist als "is".

Das geht dann so weiter. Fast keine Strings werden richtig verglichen.
Vllt kann mir da jmd helfen.

Grüße

Niklas
Belur is offline  
Old 01/30/2014, 14:25   #2
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Die Bedingungen stimmen tatsächlich nicht, du musst (glaube ich) mit >= bzw <= überprüfen, die Differenz kann auch größer als |1| sein

Padmak
Padmak is offline  
Thanks
1 User
Old 01/30/2014, 14:59   #3
 
Belur's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
Tatsache stimmt.

Auf war das wohl falsch angegeben.

Läuft jetzt danke
Belur is offline  
Reply


Similar Threads Similar Threads
[Hilföö] C++ DLL - Console, bzgl. strcmp... einfach lesen ;)
03/17/2013 - C/C++ - 13 Replies
Hallöö ;o I hob da n Problämm... Ich habe ne DLL in der ich eine Konsole erscheinen lasse. Dann hab ich ne kleine Funktion zum ändern der Schriftfarbe.. Soweit so gut... Funktioniert soweit- ABER... Ich will jetzt ne Eingabe per "if" abfragen! (siehe code)
[C++]strcmp gibt false zurück obwohl beide Argumente gleich lang/groß sind
10/04/2011 - C/C++ - 2 Replies
Wie im Titel schon gesagt habe ich zwei Strings, einen üblichen cstring mit char* und einen String mit einer selbst erstellten Klasse. Nun habe ich den operator "==" überladen zum vergleichen von zwei Strings. Als Argumente erwartet die (als friend deklariert, da global ) Methode einen cstring s1 und einen String s2, vergleicht die längen und gibt dann den bool'schen Wert zurück. Im main habe ich nun ein String "Adam" und einen cstring den ich eingebe. Die werden anschließlich verglichen....
[S] Internetseite die Gear vergleicht und besseres Vorschlägt
04/30/2011 - World of Warcraft - 3 Replies
Hallo, ich wollte mal fragen ob ihr zufällig eine internetseite kennt auf der man sich items suchen kann die besser sind als die eigenen ok ich habe schon solche seiten gesehen allerdings wird da immer das ganze gear also heal, dd und so angezeigt wenn ich z.b. tank bin. Am besten so das man die HP auf 85 HC stellen kann und er sozusagen BIS gear von HC anzeigt und man diese nur noch Farmen muss in den jeweiligen HC´s die dort dazu angezeigt werden :D vllt gibt es ja sowas xP LG
Bester ACCOUNT wenn man mit dem rest vergleicht hier
07/27/2010 - Metin2 Trading - 15 Replies
Metin2 Account 4P SKILLS US NEW WORLD PVP WINNER SURA bei eBay.de: Metin2 (endet 23.07.10 17:30:51 MESZ)



All times are GMT +1. The time now is 11:18.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.