C++ :: Aufgabe #57 :: Lösung #1

3 Lösungen Lösungen öffentlich
#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
vote_ok
von JaRk (60 Punkte) - 15.07.2014 um 13:44 Uhr
Quellcode ausblenden C-Code
// 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

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben
2099239

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.