C++ :: Aufgabe #330
2 Lösungen

Text gemäß Vorlage neu sortieren
Anfänger - C++
von JKooP
- 12.02.2021 um 09:53 Uhr
Ein durcheinandergeratener Text soll gemäß einer Vorlage (Array) neu sortiert werden.
Dazu soll eine Methode/Funktion erstellt werden, mit der man die Zeichen des
Ausgangstextes gemäß den vorgegebenen Positionen im Array neu anordnet.
Ausgangstext = "programmyourtrainer"
Array = [ 9, 10, 11, 12, 13, 14, 15, 16, 5, 6, 7, 8, 0, 1, 2, 3, 4, 17, 18 ]
Zieltext = "trainyourprogrammer"
Erläuterung:
Das erste Zeichen des Ausgangstextes (p) muss gem. Array an die 9. Position.
Das Zeichen (y) muss an die 5. Position. Achtung: Array ist nullbasiert!
_ _ _ _ _ y _ _ _ p _ _ _ _ _ _ _ _
Viel Spaß
Dazu soll eine Methode/Funktion erstellt werden, mit der man die Zeichen des
Ausgangstextes gemäß den vorgegebenen Positionen im Array neu anordnet.
Ausgangstext = "programmyourtrainer"
Array = [ 9, 10, 11, 12, 13, 14, 15, 16, 5, 6, 7, 8, 0, 1, 2, 3, 4, 17, 18 ]
Zieltext = "trainyourprogrammer"
Erläuterung:
Das erste Zeichen des Ausgangstextes (p) muss gem. Array an die 9. Position.
Das Zeichen (y) muss an die 5. Position. Achtung: Array ist nullbasiert!
_ _ _ _ _ y _ _ _ p _ _ _ _ _ _ _ _
Viel Spaß
Lösungen:

#include <iostream> #include <vector> using namespace std; void textVorlage(string text, vector<int> arr); int main() { vector<int> newArr = {9, 10, 11, 12, 13, 14, 15, 16, 5, 6, 7, 8, 0, 1, 2, 3, 4, 17, 18}; textVorlage("programmyourtrainer", newArr); return 0; } void textVorlage(string text, vector<int> arr) { string holder[size(arr)]; int counter = 0; for (int element : arr) { holder[element] = text[counter]; ++counter; } for (string element : holder) { cout << element; } cout << '\n'; }
C++ 17
C-Code

#include <iostream> #include <string> #include <vector> std::string restore_string(std::string s, std::vector<int> indices) { std::vector<char> arr(indices.size()); auto k{ 0 }; for(const auto& i : indices) arr[i] = s[k++]; std::string str(arr.begin(), arr.end()); return str; } int main() { std::string s = "programmyourtrainer"; std::vector<int> i = { 9, 10, 11, 12, 13, 14, 15, 16, 5, 6, 7, 8, 0, 1, 2, 3, 4, 17, 18 }; std::cout << restore_string(s, i) << std::endl; }