Der Text wird nach dem Suchstring durchsucht, das letzte Vorkommen des Suchstrings im Text wird einschließlich einer links- und rechtsseitigen Umgebung von je (bis zu) fünf Zeichen ausgegeben; falls der Suchstring nicht im Text vorkommt, soll "Nichts gefunden." ausgegeben werden. Eingabe Text: "Ich habe Probleme mit Strings." Suchstring: "in" Ergebnis: "t Strings." Hat jemand einen Gedankenspruch für uns, da wir nicht weiterwissen. No comments like do your homework on your on pls!
Diese Hausaufgabe ist doch recht einfach zu lösen. Das Problem ist in zwei Schritte zu zerteilen: 1. Suchen des angegebenen Strings. 2. Ausgabe der "Umgebung" des Treffers. Dabei ist die Position des Treffers aus 1. im Gesamtstring und die Länge des Gesamtstrings zu berücksichtigen. Im Beispiel liegt der Treffer sehr dicht am Ende des Gesamtstrings, so daß nur noch weniger als 5 Zeichen davon ausgegeben werden können (denn wo nichts ist, ist nichts).
Nein die Fragestellung lautet ja ;-) der letzte Teilstring... Bsp: "Warum ist so ein schlechtes Wetter heute puhh!" suchstring = "eu" Ausgabe = "ter heute pu"
Heinrich Schmidt schrieb: > Hat jemand einen Gedankenspruch für uns, da wir nicht weiterwissen. Kauf dir 'nen C-Buch, oder was ist ein Gedankenspruch? Ansonsten ein paar Stichworte: strtok() Zeiger memcpy() oder irgendeine Suchmaschine "string teilen" oder ähnliche Suchworte Heinrich Schmidt schrieb: > No comments like do your homework on your on pls! Warum auch, wenn ich Gedankenspruch richtig interpretiere, braucht ihre Denkanstöße, da oben stehen vier. Plus Rufus' Beitrag. Heinrich Schmidt schrieb: > Nein die Fragestellung lautet ja ;-) > der letzte Teilstring... > > Bsp: > "Warum ist so ein schlechtes Wetter heute puhh!" > suchstring = "eu" > Ausgabe = "ter heute pu" Passt gar nicht, oder? Bsp: "Warum ist so ein schlechtes Wetter heute puhh!" suchstring = "te" Ausgabe = "r heute pu" und Ausgabe = "s Wetter heute pu" wäre falsch.
Heinrich Schmidt schrieb: > No comments like do your homework on your on pls! ... like: ... ... on your own ... ... , please! ...
1 | my $eingabe="Warum ist so ein schlechtes Wetter heute puhh!"; |
2 | my $suchstring="eu"; |
3 | if ($eingabe=~/(.{0,5}$suchstring.{0,5})/g) { |
4 | print $1,"\n"; |
5 | } else { |
6 | print "Nicht gefunden\n"; |
7 | } |
Heinrich Schmidt schrieb: > Hat jemand einen Gedankenspruch für uns, da wir nicht weiterwissen. Ja: erledige es in 2 Teilschritten wie schon angedeutet. Der erste Teilschritt ist trivial: Den Teilstring suchen. Von optimal ist ja nicht die Rede, daher: ihr könnt das so einfach machen wie ihr wollt. Wie machst du es denn von Hand? Du fängst links, beim ersten Zeichen an und siehst nach, ob hier ein entsprechender Teilstring vorhanden ist. Wenn ja merkst du dir die Position. Dann probierst du beim 2.ten Zeichen, dann beim 3.ten etc. etc. Die AUfgabe dürfte bewusst so gestellt sein, dass man sein Wissen über C Strings unter Beweis stellt und man mit den Standard-C str... Funktionen nicht sehr weit kommt. Zumindest gibt es keine Standard Funktion, die alles in einem Aufwasch erledigt, sondern man muss kombinieren. Aber genau darum gehts ja schliesslich in der Programmierung.
Ja das hatten wir bemerkt > Die AUfgabe dürfte bewusst so gestellt sein, dass man sein Wissen über C > Strings unter Beweis stellt und man mit den Standard-C str... Funktionen > nicht sehr weit kommt. wir dachten jedoch daran von hinten anzufangen zu zählen und den suchstring zu drehen ...
Heinrich Schmidt schrieb: > Ja das hatten wir bemerkt >> Die AUfgabe dürfte bewusst so gestellt sein, dass man sein Wissen über C >> Strings unter Beweis stellt und man mit den Standard-C str... Funktionen >> nicht sehr weit kommt. > > wir dachten jedoch daran von hinten anzufangen zu zählen und den > suchstring zu drehen ... clever. Also: Haut rein!
Εrnst B✶ schrieb:
1 | my $eingabe="Warum ist so ein schlechtes Wetter heute puhh!"; |
2 | my $suchstring="eu"; |
3 | if ($eingabe=~/(.{0,5}$suchstring.{0,5})/g) { |
4 | print $1,"\n"; |
5 | } else { |
6 | print "Nicht gefunden\n"; |
7 | } |
Ach, hat GCC neuerdings auch ein Perl-Frontend? :-)
Jörg Wunsch schrieb: > Ach, hat GCC neuerdings auch ein Perl-Frontend? :-) Ups. das GCC-Forum hatte ich übersehen. also:
1 | #include <iostream> |
2 | #include <string> |
3 | |
4 | int main() { |
5 | std::string eingabe="Warum ist so ein schlechtes Wetter heute puhh!"; |
6 | std::string such="te"; |
7 | std::string::size_type p=eingabe.rfind(such); |
8 | if (p != std::string::npos) { |
9 | std::string::size_type start=p>5?p-5:0; |
10 | std::string::size_type len=p-start+such.length()+5; |
11 | |
12 | std::cout << eingabe.substr(start,len) << std::endl; |
13 | } else { |
14 | std::cout << "Nicht gefunden" << std::endl; |
15 | }
|
16 | return 0; |
17 | }
|
C++ sollte ja in Ordnung sein, ist Teil vom GCC und nirgendwo steht was abweichendes ;)
Εrnst B✶ schrieb: > C++ sollte ja in Ordnung sein, ist Teil vom GCC und nirgendwo steht was > abweichendes ;) Jetzt fehlt noch eine Ada-Version des Programms (GNAT) :)
1 | import std.stdio; |
2 | import std.string; |
3 | |
4 | void main(char[][]) |
5 | { |
6 | int[2] offset = [-5, 5]; |
7 | char[] eingabe = "Warum ist so ein schlechtes Wetter heute puhh!"; |
8 | int index = find(eingabe, "in"); |
9 | writefln("Found at %d\n\t%s", index, eingabe[index + offset[0]..index + offset[1]]); |
10 | } |
D 1.0 mit 'phobos' sieht C da noch recht ähnlich... (Hab's allerdings nicht mit dem GDC getestet) scnr, Jörg
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.