reverse char sequence

Bjarne Stroustrup “Programming Principles and Practice Using C++”
Chapter 8 Exercise 6
Using std_lib_facilities.h by Bjarne Stroustrup.

main.cpp main file

//	Philipp Siedler
//	Bjarne Stroustrup's PP
//	Chapter 8 Exercise 6

#include "std_lib_facilities.h"

vector<string> myVec{ "a","b","c","d","e","f","g","h","i","j" };
vector<string> myVecRev;

class Rev {
public:
	vector<string> v;
	vector<string> vr;

	Rev(vector<string>& _v, vector<string>& _vr) :v(_v), vr(_vr) {};
	void reverse();
	void reverseSame();
	void printV(string);
	void printVR(string);
};

void Rev::reverse() {
	for (int i = 0; i < v.size(); i++) {
		vr.push_back(v[(v.size() - 1) - i]);
	}
}

void Rev::reverseSame() {
	for (int i = 0; i < v.size() / 2; i++) {
		string temp;
		temp = v[i];
		v[i] = v[(v.size() - 1) - i];
		v[(v.size() - 1) - i] = temp;
	}
}

void Rev::printV(string label) {
	for (string x : v) {
		cout << label << " " << x << "\n";
	}
}

void Rev::printVR(string label) {
	for (string x : vr) {
		cout << label << " " << x << "\n";
	}
}

int main()
try
{
	string label = "l";

	Rev rev(myVec, myVecRev);

	cout << "First version:\n";

	rev.reverse();
	rev.printV(label);
	rev.printVR(label);

	cout << "Second version:\n";

	rev.reverseSame();
	rev.printV(label);

	keep_window_open();
}
catch (runtime_error e) {
	cout << e.what() << "\n";
	keep_window_open();
}

catch (...) {
	cout << "Exiting\n";
	keep_window_open();
}
Output:
First version:
l a
l b
l c
l d
l e
l f
l g
l h
l i
l j
l j
l i
l h
l g
l f
l e
l d
l c
l b
l a
Second version:
l j
l i
l h
l g
l f
l e
l d
l c
l b
l a
Please enter a character to exit

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.