From 042acb10595161ac36b47768f7c1e58c553e6b33 Mon Sep 17 00:00:00 2001 From: Michael Abed Date: Sun, 12 Feb 2012 15:42:43 -0500 Subject: solve problem 4 --- Makefile | 5 ++++- Q4.cpp | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index cce7ed3..1a7e44c 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ -all: Q1 Q2 Q3 +all: Q1 Q2 Q3 Q4 Q1: Q1.cpp g++ -o Q1 Q1.cpp @@ -10,5 +10,8 @@ Q2: Q2.cpp Q3: Q3.cpp g++ -o Q3 Q3.cpp +Q4: Q4.cpp + g++ -o Q4 Q4.cpp + clean: rm Q1 Q2 Q3 diff --git a/Q4.cpp b/Q4.cpp index e69de29..0a14cad 100644 --- a/Q4.cpp +++ b/Q4.cpp @@ -0,0 +1,49 @@ +/* + * Michael Abed + * + * Lab 1 Problem 4 + * + * Convert a letter based on an offset. + */ + +#include + +using namespace std; + +int main() +{ + + char input; + int offset; + int caseswap = 'a' - 'A'; + + cout << "Enter character: "; + cin >> input; // any character will do + + do { // validate input + cout << "Offset (enter 0 to convert case): "; + cin >> offset; + if (offset < 0) + cout << "Offset must be positive" << endl; + if (offset >= 128) + cout << "Offset must be less than 128" << endl; + } while (offset < 0 || offset >= 128); + + char knew; + // calculate new character + if (offset == 0 && input >= 'A' && input <= 'Z') + knew = input + caseswap; + else if (offset == 0 && input >= 'a' && input <= 'z') + knew = input - caseswap; + else if (offset == 0) + knew = input; + else + knew = input + offset; + + if (input + offset > '~' ) // larger is non printing + cout << "Result outside of ASCII range" << endl; + else + cout << "New character: " << knew << endl; + + return 0; +} -- cgit v1.2.3