.
|
|
| Autor | Beitrag |
|---|---|
|
000 17.11.2001, 23:07 Creeper |
Hi, weiss hier jemand, wie ihc in C++ einen String überprüfe, ob er nur Zahlen enthält oder auch Buchstaben, oder muss ich da jeden char ainzeln überprüfen ?? --Head Coder:Sudden-Impact Listen to CKY you fuCKYrs http://www.ckymusic.com |
|
Profil || Suche |
|
001 18.11.2001, 07:53 Tron |
nicht getestet, muesste aber funktionieren --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett Dieser Beitrag wurde am 18.11.2001 um 08:05 von Tron bearbeitet. |
|
Profil || Suche |
|
002 18.11.2001, 13:00 Mazze |
Gibt auch ne Funktion! BattleTech-MOD: |
|
Profil || Suche |
|
003 18.11.2001, 15:00 Creeper |
ok, danke --Head Coder:Sudden-Impact Listen to CKY you fuCKYrs http://www.ckymusic.com |
|
Profil || Suche |
|
004 19.11.2001, 01:20 Kriz |
Rofl, Tron ist ja der Verfechter der for-Schleifen =) Ich meine, das kann man auch so schreiben: =) Ist afaik schneller als mit for-Schleifen, wobei dieses Konstrukt einen Nachteil hat (_ = Space/Leerzeichen): string = "_____5345_0675___"; Gelesen werden die vorausgehenden Leerzeichen, dann die Zahlen 5,3,4 und 5 und dann wieder das Leerzeichen. Da aber die Funktion nicht mehr weiterliest (weil 0 kommt = char(48)), ist die Funktion zuende und es wird FALSE zurückgegeben (48 != 0 = TRUE, das negiert ergibt FALSE). Dieses Ergebnis ist aber falsch, da der String im Prinzip (außer den Leerzeichen) ja wirklich nur Zahlen enthält. Intelligenter wäre dieser Code: K:R-I)Z++ |
|
Profil || Suche |
|
005 19.11.2001, 07:07 Tron |
@Kriz: ich hab meine funktion absichtlich so geschrieben, dass sie keine getrennten zahlen akzeptiert, da ich angenommmen habe (okok... 1. programmierer-regel: NEVER make assumptions), dass er pruefen will, ob der string eine gueltige Zahl enthaelt. dein code funzt nicht, da sie, wenn das letzte zeichen eine ziffer oder leerzeichen ist, true zurueckgegeben wird. (ausserdem hast du auch was in der bedingung verdreht, die NIE true ist) besser waere: 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
006 19.11.2001, 09:48 Creeper |
So isses richitg, oder ? [code] Head Coder:Sudden-Impact Listen to CKY you fuCKYrs http://www.ckymusic.com |
|
Profil || Suche |
|
007 19.11.2001, 11:38 Kriz |
Mähhhhh, Denkfehler =) So ist's richtig: PS: cout << x++ << x; ist undefiniert, das stimmt. Wenn man Kontrolle haben will, dann muß man schreiben cout << ++x << x; Das alles ist aber sehr verwunderlich, da bei x++ der ++ Operator Priorität 1 genießt, also als allererstes ausgeführt wird. << dagegen hat nur Priorität 6, müßte also nach erst nach der Inkrementierung ausgeführt werden. Das tut es aber nicht... Noch komischer ist, daß bei ++x das ++ Priorität 2 besitzt, aber nun trotzdem vor << ausgeführt wird... Tja --K:R-I)Z++ Dieser Beitrag wurde am 19.11.2001 um 11:47 von Kriz bearbeitet. |
|
Profil || Suche |
|
008 19.11.2001, 13:06 Tron |
@Kriz:
was immer du da gemacht hast is KEIN DeMorgan gesetz das DeMorgan Gesetz lautet: ich denke, dass mein code-schnipsel aus post 005 richtig ist (denke, hoffe, galube ich, hab' grad' net genug zeit nochmal drueber nachzudenken) @Creeper:
ich denke, dass das nicht richtig ist: 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
009 19.11.2001, 14:37 Kriz |
@Tron: Erbsenzähler ;) Für diese Form der Wandlung gibt es tatsächlich kein eigenes Gesetz in der boole'schen Algebra... --K:R-I)Z++ |
|
Profil || Suche |
|
010 20.11.2001, 22:49 Creeper |
ok, ok, ich war inner Schule :rolleyes:
Head Coder:Sudden-Impact Listen to CKY you fuCKYrs http://www.ckymusic.com |
|
Profil || Suche |
|
011 20.11.2001, 23:01 Tron |
hmmm... die bedingung ist (denke ich) immer noch falsch, ein ' ' (0x20) erzeugt ein falsches ergebnis (' ' < '0') 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
012 21.11.2001, 12:08 Creeper |
naja ein leerzeichen isr doch keine zahl :D --Head Coder:Sudden-Impact Listen to CKY you fuCKYrs http://www.ckymusic.com |
|
Profil || Suche |
|
013 21.11.2001, 15:04 Kriz |
K:R-I)Z++ |
|
Profil || Suche |
|
014 21.11.2001, 15:58 Tron |
@Kriz: mein vorschlag:
oder etwas anders (weiss nicht was schneller ist, ich vermute ersterer, dan nur 2 statt 3 pruefungen pro schleifendurchlauf) : und falls doch fuehrende oder nachfolgende leerzeichen erlaubt sind, dann mein code aus post 001 --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
015 21.11.2001, 22:17 Creeper |
Kriz, vergisst immer das break; :D --Head Coder:Sudden-Impact Listen to CKY you fuCKYrs http://www.ckymusic.com Dieser Beitrag wurde am 21.11.2001 um 22:17 von Creeper bearbeitet. |
|
Profil || Suche |
|
016 22.11.2001, 00:14 Kriz |
Nee, ich vergesse immer, daß bei einem OR immer true rauskommt, wenn ein Teilausdruck stimmt. Natürlich muß da AND hin (&&), rofl =) @Creeper: Das break reißt hier auch nix mehr raus... @Tron: Erste Version ist schneller, obwohl mir das ehrlich gesagt vollkommen schnuppe wäre, weil das selbst bei einem C64 net aufgefallen wäre, ob der nun 2 oder 3 Prüfungen vornimmt. AND und OR sind atomare Schaltungen und daher so schnell wie der Blitz. Die ALU basiert drauf, also von daher... --K:R-I)Z++ |
|
Profil || Suche |
|
017 22.11.2001, 06:54 Tron |
aehm... ich glaube du hast dich igendwie ziemlich verheddert ich empfinde die loesung mit dieser return-variablen (val) als umstaendlich, einfacher ist sobald eine nicht-ziffer gefunden ist -> return false --'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
018 22.11.2001, 12:53 Creeper |
...oder break :P --Head Coder:Sudden-Impact Listen to CKY you fuCKYrs http://www.ckymusic.com |
|
Profil || Suche |
|
019 22.11.2001, 17:57 Kriz |
Und Creeper, vergiß dein break :p --K:R-I)Z++ |
|
Profil || Suche |
|
020 22.11.2001, 20:10 Tron |
@Kriz: 'KEINE PANIK' - aus der Triologie in fuenf Baenden von Douglas Adams 'FÜR DEINN FERD' - aus 'Gevatter Tod' von Terry Pratchett |
|
Profil || Suche |
|
021 22.11.2001, 23:07 Kriz |
ARGHHHHHHHHHHHHHHHHHH Von mir aus auch mit direktem return false, ist mir doch schnuppe, Leute!!! =) --K:R-I)Z++ |
|
Profil || Suche |
|
022 23.11.2001, 00:06 anothergb02 |
ma ne dumme Frage: Being in john Malkovich |
|
Profil || Suche |
|
023 23.11.2001, 03:16 Kriz |
++ ist ein unärer (einzelner) Inkrementierungsoperator. Also wer den net kennt, der kennt weder C, C++ oder Java und dergleichen! ++ gibt es als Präfix und als Postfix: ++a (Präfix) a++ inkrementiert a BEVOR a benutzt wird ++a benutzt a BEVOR a inkrementiert wird Benutzt man ++ alleine ohne Zuweisung, dann spielt es keine Rolle, ob man ++a oder a++ schreibt: ++string ist eine schnelle Zeigeroperation auf die Variable string, da diese vom Datentyp char* ist. Char* ist ein "Zeiger auf char" und definiert in C/C++ die Anfangsadresse des ersten Zeichens eines Strings. Durch ++string setzt man den Zeiger auf die Adresse des nächsten Zeichens (sofern ein nächstes Zeichen existiert). Der Zeiger "weiß", wieviele Bytes er im RAM weiterspringen muß, um auf die nächste Adresse zeigen zu können. Im Falle von char als 8-Bit Datentyp wäre das genau 1 Byte pro Sprung. K:R-I)Z++ |
|
Profil || Suche |
|
024 23.11.2001, 12:26 anothergb02 |
Danke :D ich benutze selber c++, kenne auch das ++ .... , wusste nur nicht, dass man das auch fuer Strings benutzen kann (upsa da habe ich wohl am Anfang vom C++ lernen ne Zeile bei dem Thema uebersehen :( ):D habe das immer anders gecodet -> mit array oder Stringaussortierung ... krass wusste gar nicht, dass das auch so einfach geht jepa --Being in john Malkovich |
|
Profil || Suche |
|

