Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Rätselecke » nicht casesensitives strcmp

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ]
020
14.09.2004, 18:24 Uhr
virtual
Sexiest Bit alive
(Operator)


Ach, hab ich vergessen:

--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
021
14.09.2004, 18:27 Uhr
Pablo
Supertux
(Operator)


Dann hatte ich zumindest etwas richtig . Denn ich hatte while(*a++&&*b++), allerdings fangen die Vergleiche erst an der 2. Stellen an
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
022
14.09.2004, 18:28 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Heh. Mir fällt aber gerade auf, dass all diese Lösungen fehlerhaft sind - was ist, wenn der erste String kürzer als der zweite ist und an der Stelle, an der der erste Sentinel hängt, im zweiten String ein Leerzeichen steht, schlägt der Vergleich nicht fehl und die Funktion segfaultet möglicherweise. In meiner Lösung ist das einfach zu beheben:


ach hatte ich in der aufgabenstellung ganz vergessen zu erwähnen das dieser fall nicht beachtet werden brauch

davon abgesehen unter 54 komm ich ja auch so mit meiner ersten version noch


C++:
int f(char*s,char*r){return*s|*r?tolower(*s)-tolower(*r)?1:f(++s,++r):0;}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 14.09.2004 um 18:31 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
023
14.09.2004, 18:36 Uhr
0xdeadbeef
Gott
(Operator)


Whoops - Pablo hat sogar recht, das mit & geht. Bzw ginge, wenn der Algorithmus richtig wäre.

Wie machen grad alle den Denkfehler, nur von Buchstaben auszugehen - &~32 liefert z.B. auch für ' ' und '`' eine Äquivalenz zurück, obwohl die nun wirklich nicht gleich sind, auch nicht case insensitive.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
024
14.09.2004, 18:37 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von 0xdeadbeef:
Heh. Mir fällt aber gerade auf, dass all diese Lösungen fehlerhaft sind - was ist, wenn der erste String kürzer als der zweite ist und an der Stelle, an der der erste Sentinel hängt, im zweiten String ein Leerzeichen steht, schlägt der Vergleich nicht fehl und die Funktion segfaultet möglicherweise. In meiner Lösung ist das einfach zu beheben:

C++:
f(s,t)char*s,*t;{while(*s&&*t)if((*s++^*t++)&~32)return 1;return*s|*t;}


...bei euch beiden ist das nicht so einfach.

@pablo: Mit & kommen wir nicht weiter, nein. Stell dir z.B. vor, *s = 'A' = 65 und *t = ' ' = 32, dann ist *s & *t == 65 & 32 == 0.


Naja, dann eben 42 Zeichen:

C++:
int f(const char* a, const char* b) {return!*b+!*a+(*a^*b)&95?*a|*b:f(a+1,b+1);}


Irgendwie noch 11 Zeichen Platz...
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
025
14.09.2004, 18:38 Uhr
virtual
Sexiest Bit alive
(Operator)


Bzw.

C++:
int f(const char* a, const char* b) {return!*a+tolower(*a)-tolower(*b)?*a+*b:f(a+1,b+1);}


51
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
026
14.09.2004, 18:40 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


argh...
Ich hasse es wenn ich immer schon glaube gewonnen zu haben und dann zieht immer noch irgend einer ne kürzere Lösung aus der Tasche... und alles nur weil beefy wieder einen spezialfall aufdecken musste an den nichtmal virtual vorher gedacht hatte
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
027
14.09.2004, 18:46 Uhr
Pablo
Supertux
(Operator)


Ich hasse euch Jungs, wieso kommt ihr immer auf so tolle Ideen und ich nicht
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
028
14.09.2004, 19:36 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von Pablo:
Ich hasse euch Jungs, wieso kommt ihr immer auf so tolle Ideen und ich nicht

Das willst Du nicht wirklich wissen
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
029
14.09.2004, 19:42 Uhr
Pablo
Supertux
(Operator)


oh doch!
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: [ 1 ] [ 2 ] > 3 < [ 4 ]     [ Rätselecke ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: