updated code:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
int binaryToDecimal(const std::string& binary) {
int result = 0;
for (char c : binary) {
result = (result << 1) + (c - '0');
}
return result;
}
std::string binaryToHex(const std::string& binaryCode) {
std::bitset<8> bits(binaryToDecimal(binaryCode));
std::stringstream ss;
ss << std::hex << std::setw(2) << std::setfill('0') << static_cast(bits.to_ulong());
return ss.str();
}
std::string binaryToASCII(const std::string& binaryCode) {
std::string result;
for (size_t i = 0; i < binaryCode.length(); i += 8) {
std::bitset<8> bits(binaryCode.substr(i, 8));
char asciiChar = static_cast(bits.to_ulong());
result += asciiChar;
}
return result;
}
std::string shiftASCII(const std::string& asciiText, int shiftCount) {
std::string result;
for (char c : asciiText) {
if (std::isalpha(c)) {
char base = (std::isupper(c)) ? 'A' : 'a';
char shiftedChar = ((c - base + shiftCount) % 26) + base;
result += shiftedChar;
} else {
result += c;
}
}
return result;
}
void decodeBinary(const std::string& binaryCode, std::string& originalInput, std::string& translation, int shiftCount) {
std::cout << "May I present your 1s&0s Code: " << binaryCode << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(2));
std::string asciiText = binaryToASCII(binaryCode);
std::cout << "Here's your Decoded ASCII: " << asciiText << std::endl;
std::string shiftedText = shiftASCII(asciiText, shiftCount);
std::cout << "Shifted ASCII: " << shiftedText << std::endl;
std::string shiftedBinary = "";
for (char c : shiftedText) {
std::bitset<8> bits(c);
shiftedBinary += bits.to_string();
}
std::cout << "Thy Shifted Binary: " << shiftedBinary << std::endl;
originalInput = binaryCode;
translation = shiftedText;
}
int main() {
std::string runProgram;
std::cout << "Wouldst thou like to runneth the program? (Yes/No): ";
std::cin >> runProgram;
if (runProgram == "Yes" || runProgram == "yes" || runProgram == "Y" || runProgram == "y") {
std::string binaryCode;
std::cout << "Giveth to me thine code of 1's and 0's (without spaces): ";
std::cin >> binaryCode;
std::this_thread::sleep_for(std::chrono::seconds(2));
std::string hexCode = binaryToHex(binaryCode);
std::cout << "Ye ole Hex Code: 0x" << hexCode << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(2));
std::string originalInput;
std::string translation;
int shiftCount;
bool validShiftCount = false;
while (!validShiftCount) {
std::string shiftCountStr;
std::cout << "Supply thine desired shift count: ";
std::cin >> shiftCountStr;
try {
shiftCount = std::stoi(shiftCountStr);
validShiftCount = true;
} catch (const std::exception& e) {
std::cout << "Thou hast failed. Could thou present an integer value for thy shift count." << std::endl;
}
}
decodeBinary(binaryCode, originalInput, translation, shiftCount);
std::cout << "Original Input: " << originalInput << std::endl;
std::cout << "Translation: " << translation << std::endl;
std::ofstream outputFile("what_you_had_said_was.txt");
if (outputFile.is_open()) {
outputFile << "1s&0s Code: " << binaryCode << std::endl;
outputFile << "Hex Code: 0x" << hexCode << std::endl;
outputFile << "Original Input: " << originalInput << std::endl;
outputFile << "Translation: " << translation << std::endl;
outputFile.close();
std::cout << "Translation saved to what_you_had_said_was.txt" << std::endl;
} else {
std::cout << "Apparently no one is home, I tried knockin'..." << std::endl;
}
std::string deleteEntry;
std::cout << "Wouldst thou like to delete the entry from the file? (Yes/No): ";
std::cin >> deleteEntry;
if (deleteEntry == "Yes" || deleteEntry == "yes" || deleteEntry == "Y" || deleteEntry == "y") {
if (std::remove("what_you_had_said_was.txt") == 0) {
std::cout << "Entry go poof." << std::endl;
} else {
std::cout << "For some reason unbeknownst to me, there has been an extreme malfunction. That file is still there." << std::endl;
}
}
} else {
std::cout << "Program terminated." << std::endl;
}
return 0;
}
-------------
what is the output of the new code if the input is 10101011100101010101000101101001010100101111001000101010100010111011011011110001 with a shift of 65?
--------------
Also can you do a grammar check on my old English?