C++ :: Aufgabe #57
3 Lösungen

String einlesen, umkehren und Leerzeichen einfügen
Anfänger - C++
von pianoplayer
- 30.11.2013 um 13:34 Uhr
Schreiben Sie eine Funktion reverse_add_blank!, die einen String entgegennimmt, die Reihenfolge der Buchstaben umkehrt und Leerzeichen einfügt. Die Funktion soll den String verändern!
Lösungen:

// Main.cpp #include <iostream> #include <string> using namespace std; void reverse_add_blank(string*, bool, int); int main() { char cEingabeBlank;// Zum Einlesen der Buchstaben j und n bool bBlank;// Soll ein Leerzeichens hinzugefügt werden? int iPos = 0;// Position des Leerzeichens string str;// Eingelesener String cout << "Geben Sie einen String ein: "; getline(cin, str);// Benutzer String abfragen und in 'str' speichern. cout << endl << endl << "Soll ein Leerzeichen hinzugef\201gt werden? [j, n]" << endl; cin >> cEingabeBlank;// Einlesen der Antwort bzgl. des Leerzeichens switch (cEingabeBlank)// Abfrage der Antwort { case 'j': case 'J'://Wenn ein Leerzeichen eingefügt werden soll ... bBlank = true;//... wird bBlank auf true gesetzt, ... cout << "An welcher stelle im String soll ein Leerzeichen hinzugef\201rt werden?" << endl;// ... gefragt an welcher Stelle das Leerzeichen eingefügt werden soll und ... cin >> iPos;//... die Eingabe abgewartet. break; case 'n': case 'N':// Wenn kein Leerzeichen erwünscht ist soll ... bBlank = false;// ... bBlank auf false gesetzt werden, ... cout << endl << "Es wird kein Leerzeichen hinzugef\201gt." << endl;// ... eine Ausgabe erscheinen und ... getchar();// ... auf einen Tastendruck gewartet werden. break; default:// Wenn der Nutzer etwas falsches eingibt wird ... cout << "Fehlerhafte Eingabe. Das Programm wird beendet.";// ... eine Fehlermeldung ausgegeben, ... cin.sync(); getchar();// ... auf einen Tastendruck gewartet und ... return 0;// ... das Programm beendet. break; } reverse_add_blank(&str, bBlank, iPos);// Die Funktion reverse_add_blank aufrufen um den String zu bearbeiten. cout << str.c_str();// Ausgabe des bearbeiteten Strings cin.sync(); getchar(); } void reverse_add_blank(string *szString/*Zu bearbeitender String*/, bool bAddBlank/*Soll ein Blank hinzugefügt werden?*/, int iBlankPos/*Position des Blanks im String*/) { string EditString = *szString;// Einem Editierbaren String wird der zubearbeitende Wert zugewiesen. reverse(EditString.begin(), EditString.end());// Der String wird umgedreht. if (bAddBlank == true)// Wenn ein Lehrzeichen eingefügt werden soll ... { EditString.insert(iBlankPos, " ");// ... wird an der Position iBlankPos wird ein Leerzeichen eingefügt. } *szString = EditString;// Der neue String zurück wird in den alten geschrieben. }

void reverse_add_blank(string &wert){ cout << wert.size() << endl; int size = wert.size()/2; for(int i = 0; i < size; i++){ int low = i; int top = wert.size() - 1 - i; char tmp = wert[low]; wert[low] = wert[top]; wert[top] = tmp; } int y= wert.size(); for(int i=1; i<y; i+=1) { wert.insert(i," "); y=wert.size(); i++; } }

#include <iostream> using namespace std; void reverseAddBlank(char *x); int main(void) { char eingabe[120]; cout<<"Eingabe :"; cin>>eingabe; reverseAddBlank(eingabe); cout<<"\n"; system("Pause"); } void reverseAddBlank(char *x) { char copy[120]; strcpy(copy,x); int a=strlen(x)-1; for(;0<=a;a--) { *x=copy[a]; cout<<*x<<" "; *x++; } }