Week 8: Assignment - Recursion

This commit is contained in:
Llewellyn van der Merwe 2020-10-24 14:30:22 +02:00
parent 662025739e
commit a5d84bfb7e
Signed by: Llewellyn
GPG Key ID: EFC0C720A240551C
2 changed files with 89 additions and 0 deletions

6
week-08/CMakeLists.txt Normal file
View File

@ -0,0 +1,6 @@
cmake_minimum_required(VERSION 3.16)
project(week-08)
set(CMAKE_CXX_STANDARD 14)
add_executable(week-08 main.cpp)

83
week-08/main.cpp Normal file
View File

@ -0,0 +1,83 @@
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Champlain College SDEV-345-81
*
* C++ Week 8: Recursion (first semester) - (2020/10/24)
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Write a recursive algorithm to output the hexadecimal representation of an integer.
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Written by Llewellyn van der Merwe <llewellyn.vandermerw@mymail.champlain.edu>, October 2020
* Copyright (C) 2020. All Rights Reserved
* License GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include<iostream>
using namespace std;
// function declaration
void getHexadecimal();
string getHexadecimal(long value);
void getHexadecimal(long value, string& answer);
int main() {
// lets start our program to get hexadecimal
getHexadecimal();
return 0;
}
// function to get the hexadecimal value
void getHexadecimal() {
// long value to hold 64 bit integers
long number;
bool show = true;
// ask the question
while (true) {
if (show) {
cout << "Enter [n] at any time to stop." << endl;
cout << endl;
// show this notice only once
show = false;
}
cout << "████████████████████████████████████" << endl;
cout << " Convert a integer to hexadecimal" << endl;
cout << " Enter an integer: ";
cin >> number;
// if no integer is added stop
if (cin.fail()) {
break;
}
// printout the answer in bold yellow
cout << " Hexadecimal: \e[1m\e[33m" << getHexadecimal(number) << "\e[0m" << endl;
}
}
// starter function to get the hexadecimal value
string getHexadecimal(long value) {
// we use a string to hold the answer
string answer;
// we start the recursion quest
getHexadecimal(value, answer);
// we return the answer
return answer;
}
// recursive function to get the hexadecimal value
void getHexadecimal(long value, string& answer) {
// we have a sum value for calculation
long sum;
// we are at the end point and should start
// working up the stack
if (value == 0)
return;
// keep going
getHexadecimal(value / 16, answer);
// now work out each
sum = (sum = value % 16) >= 10 ? sum + 55 : sum + 48;
// add to our answer
answer += (char) sum;
}