C++ :: Aufgabe #57

3 Lösungen Lösungen öffentlich

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:

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.
}
vote_ok
von Crashy (190 Punkte) - 08.11.2014 um 19:02 Uhr
Quellcode ausblenden C-Code
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++;
	}
}
vote_ok
von ThePain36 (250 Punkte) - 07.10.2015 um 13:41 Uhr
Quellcode ausblenden C-Code
#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++;
}
}


2100455

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.