001
16.01.2009, 02:25 Uhr
0xdeadbeef
Gott (Operator)
|
Zunächst mal, in C++ (ich gehe davon aus, dass du hier C++-Code schreiben willst, sonst kannst du std::cout nämlich nicht benutzen) ist es sinnvoller, anstelle der alten C-Strings std::string zu benutzen.
In diesem speziellen Fall läufst du in das Problem der const-correctness - du kannst einen char const* nämlich nicht einfach einem char* zuweisen. Sowas wie
C++: |
char* Text="011112"; char* Suchstring="112";
|
sollte jeder respektable Compiler bemängeln.
Für deine Funktion bedeutet das: Wenn du die die Parameter zu char const * machst, kannst du keinen char* zurückgeben, und wenn du char* nimmst, kannst du keine konstanten Zeichenketten übergeben. Im Endeffekt müsstest du deswegen zwei Frontends für deine Funktion schreiben.
C ist an dieser Stelle nachlässiger, aber ganz ehrlich, es ist auch da ein ziemlich dreckiger Hack. Andere Zeiten, andere Sitten, nehme ich an.
Ansonsten, wenn ich diese Fehler aus deinem Programm entferne, liefert es mir das richtige Ergebnis. Die Rückgabe wird bei der Ausgabe halt wieder als String interpretiert. Gib ihm als Text mal "011112345" oder so, dann wird es vielleicht klarer.
Oh, und am Rande: Es ist höflich, Testcases so zu posten, dass sie direkt rauskopiert und kompiliert werden können. Das bedeuet zum einen, die Header-Includes am Anfang nicht rauszuschneiden, und zu anderen, wenn es sich vermeiden lässt, auf unnötige, plattformspezifische Codeteile (in diesem Fall getch()) zu verzichten. -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra Dieser Post wurde am 16.01.2009 um 02:26 Uhr von 0xdeadbeef editiert. |