Permutierter Index
-
Hallo!
Ich hab da ein kleines "Problem".
Ich soll ein Programm schreiben, das zwei Zeilen Text einliest (durch den Anwender eingegeben), die Wörter dieses Satzes (Satz geht eben über zwei Zeilen) rotiert, also das hinterste Wort nach vorne usw. bis alle Rotationsmöglichkeiten durch sind.
Danach sollen diese Rotationen (die in einem Vektor sind) nach dem Alphabet sortiert werden. Anschließend soll ein permutierter Index erzeugt werden und der Spass entsprechend ausgegeben werden.
Um mal das etwas komplizierte Anliegen klarer zu machen hier mal das Beispiel aus dem Buch wo diese Aufgabe drinnen steht (Intensivkurs C++):
Eingabe:
The quick brown fox
jumped over the fenceDas hier soll ausgegeben werden:
*The quick | brown fox
jumped over the | fence
The quick brown | fox
| jumped over the fence
jumped | over the fence
The | qucik brown fox
jumped over | the fence
| The quick brown fox
*Der vertikale Strich ( | ) soll nicht erzeugt werden, an dieser stelle soll nur ein Tabulator o.ä sein. Die rechte Seite soll also alphabetisch sortiert sein. Der Satz wird quasi nach seinen Wörtern sortiert, B ist z.B. der erste Buchstabe der vorkommt, also wird der satz ab dem ersten Wort mit B recht gelistet und alles was davor kommt links.
Mein Problem ist jetzt, wie verknüpfe ich diese Wörter/Sätze richtig mit den Indizes damit ich den Spass wie oben formatiert ausgeben kann?? V.a. mit zwei Zeilen?
Das Stichwort lautet "permutierter Index", wobei ich dazu nirgends was finde *g*
Laut meinem Buch steht ein guter Algorithmus im Buch "The AWK Programming Language", vielleicht hat das ja zufällig jemand...
Ich komm im Moment nicht mehr wirklich weiter und würd mich über hilfreiche Tipps freun! Danke!
-
du sollst es selber machen!!!!!!!!!!!!!!!!!!!!!
-
Kannst du dein Problem ein bisschen genauer beschreiben????
Vieleicht kann ich die ja helfen
-
Ich programmier nach den Feiertagen mal soweit, bis zu dem Teil, wo ich nicht weiss, wie ich es genau implementieren soll, dann kann ich hoffentlich anhand des Codes genauer erklären. Das ganze ist ein etwas komplexeres Problem, das man irgendwie nicht so wirklich gut erklären kann *g*
Aber trotzdem schon mal Danke für Hilfeangebot

-
Ich programmier nach den Feiertagen mal soweit, bis zu dem Teil, wo ich nicht weiss, wie ich es genau implementieren soll, dann kann ich hoffentlich anhand des Codes genauer erklären. Das ganze ist ein etwas komplexeres Problem, das man irgendwie nicht so wirklich gut erklären kann *g*
Aber trotzdem schon mal Danke für Hilfeangebot

-
Ich programmier nach den Feiertagen mal soweit, bis zu dem Teil, wo ich nicht weiss, wie ich es genau implementieren soll, dann kann ich hoffentlich anhand des Codes genauer erklären. Das ganze ist ein etwas komplexeres Problem, das man irgendwie nicht so wirklich gut erklären kann *g*
Aber trotzdem schon mal Danke für Hilfeangebot

-
alles klar.
Stell dann einfach mal den quellcode ins forum. Dann helfe ich dir weiter.
Schöne Feiertage
-
schöner triple post

schreib das ganze doch in nen stream und nimm random::shuffle und sowas
-
Ja, sorry für den Dreifachpost, hab zwar nur einmal auf Absenden geklickt, aber er hat dreimal geschickt anscheinend...
Also, ich hab noch nicht weiterprogrammiert, weil ich mein System neuinstallieren musste und damit genug beschäftigt war, aber ich hab mir das ganze mal überlegt.
Die Zeile einlesen und ihre Wörter rotieren sollte ja kein Thema sein.
Jede nach der Rotation erzeugte neue Zeile wird in einem Vektor gespeichert.
Die resultierenden Zeilen werden alphabetisch sortiert.
Ok, mein Problem dabei ist jetzt folgendes:
1. Wie kann ich am besten bewerkstelligen, dass der Anfang und das Ende
des ursprünglichen Satzes gespeichert wird (bzw. dessen Indizes)? Das Programm muss ja wissen, wo der Satz anfängt und aufhört und die Rotationen richtig zu "splitten".Also wenn z.B. eine Rotation des Satzes "The quick brown fox" folgendes ergibt: "quick brown fox The" muss das Programm ja bei der Ausgabe diesen beim Buchstaben "Q" auflisten und das "The" auf die linke Seite schreiben.
2. Wie implementiert man am besten den Vorgang des Trennens des Satzes, das das Schreiben auf die linke bzw. rechte Seite ermöglicht?
Also, dass ich sag der nächste Satz ist "quick brown fox The", nun schreibe "quick brown fox" unter Q auf die recht Seite und "The" auf die linke.
Oder den Satz "brown fox The quick", also unter B "brown fox" schreiben (rechte Seite) und "The quick" auf die linke.Man muss quasi laut "Anleitung" jede Wortgruppe durch jedes Wort der Wortgruppe indizieren. Hört sich verwirrend an und ist es auch, denn ich kapiers nicht wirklich *g*