C++ :: Aufgabe #57 :: Lösung #1
3 Lösungen
#57
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!
#1
von JaRk (60 Punkte)
- 15.07.2014 um 13:44 Uhr
// 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.
}Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
