Ich habe eine Aufgabe, die mich auffordert, die folgende Aufgabe zu erledigen: "Lassen Sie einen Benutzer eine Zeichenfolge eingeben. Zeigen Sie dann diese Zeichenfolge wie folgt angezeigt: Zeigen Sie das erste Zeichen in der Zeichenfolge, dann die zuletzt, dann die zweite, dann die vorletzte, dann die dritte ... Wenn also die Zeichenfolge "abcdef" ist, wird Folgendes angezeigt: afbecd (Eingabe "abcdef") " Hier ist mein Ansatz, aber es hat nicht funktioniert Lauf. Ich habe einen Segmentation Fault 11.String mash (Rekursion) C++
#include <iostream>
#include <cmath>
using namespace std;
void printLetters(string s);
int main()
{
string sequence;
cout << "Enter a sequence: ";
getline(cin, sequence);
printLetters(sequence);
}
void printLetters(string s)
{
int a = floor(s.length()/2.0);
// stopping case
if(s == "")
{
return;
}
// reduce problem
printLetters(s.substr(0));
//cout << s[0];
cout << s[a];
}
Hier ist ein exmaple: 12345. In meiner Funktion printLetters (string s), drucke ich aus der String mit dem Index 0 beginnt, dann habe ich die vollständige Zeichenfolge 12345. Dann Ich "cout" den Inhalt bei Index s.length()/2, das ist das mittlere Zeichen "3". Dann gehe zurück zur Zeichenkette und drucke die Teilzeichenkette wieder ab Index 0 aus, aber diesmal ist es 1245. Ich wiederhole die Schritte, bis ich 1 bekomme. In der Vorlesung erklärte mein Professor, wann die Rekursion das Ende der Prozess wird es von unten wieder nach oben gehen. Dann, wenn ich 1 erreiche, wird es wieder auf 5, 2, 3,4 gehen. Also nehme ich an, ich würde die Zeichenfolge "15234" ausdrucken, aber ich tat es nicht. Wenn Sie eine Idee haben, würde ich gerne zuhören. Danke vielmals!
Hier ist ein weiterer Code, der zum Umkehren einer Zeichenfolge verwendet wird. Mein Professor erklärte im Unterricht, und das war die Logik, die er hinter dem Code gab.
#include <iostream>
using namespace std;
void printString(string s);
int main()
{
printString("hello");
return 0;
}
void printString(string s)
{
if(s == "")
{
return;
}
printString(s.substr(1));
cout << s[0];
}
'Stock (s.length()/2.0)' besser geschrieben als 's.length()/2'. – melpomene
Was meinst du, "dieses Mal ist es 1245 *". "s s (0)" ist wieder "s", d. h. "12345". – melpomene
Versuchen Sie, zuerst einen Debugger zu verwenden ... – Jepessen