Hi All,
I'm a relative newbie having trouble completing a program that is required to read the text character by character from a .txt file and to then encode certain characters to something thing else. It is then supposed to be output to a separate .txt
What seems to happen is that not all the letters that need to be changed are being changed and I can't get it to include the 1 before the encoded letter as specified in the question.
Why has it worked for some letters and not the others? What changes should I make? or am I going about this the wrong way? Please help by putting me in the right direction. I assumed the switch statement would be the easiest way to do this, but if I'm wrong can someone please let me know what section to read up so that I can answer this question?
The Question Basics:
Write a program that reads an input file with a letter character by character. Change the following characters:
t (or T) changes to 1Y
h (or H) changes to 1O
j (or J) changes to 1X
d (or D) changes to 1B
a (or A) changes to 1S
p (or P) changes to 1M
i (or I) changes to 1Q
The rest of the characters remain the same. Read the file character by character and write the character (if it stays the same) to the output file or write the changed version to the output file.
Input File:
"Dear Julia,
You are the most beautiful girl that I have ever seen. I was wondering if
you would like to come and visit me. My mother will make us pancakes with
ice cream. My dog, Bella, just had three beautiful puppies. Mom says I may
only keep one of them. I would,like you to help me choose one, because they
are all so cute and adorable. And just because you are my special friend,
you may also have one if you want.
Your friend,
Hector."
Output File:
eruQ,o r O oYeuQu QlOY Sevren S oBrn fo ol Qeooen QQ e yoOrQlSesScksQOc rS.yo,el,uYS Oe euQu uMe.o Ss S
nyeMn fOm ol,Qeo oeMeOoen,eSs Oyr l ouen Brbe n uYeSs o r yMcS reB
o S loSen fo SY
orreB
eYrr
My Code:
#include <iostream> //include for cout
#include <fstream> // include for file I/O
#include <cstdlib> // include for exit fxn
using namespace std;
int main()
{
char next, org_char, enc_char; //declare variables of type char
ifstream in_stream; //declaration for input stream
ofstream out_stream; //declaration for output stream
in_stream.open("letter.txt"); //open and check input file opening
if (in_stream.fail())
{
cout << "Input file opening failed.\n";
exit(1);
}
out_stream.open("encode.txt"); //open and check output file opening
if (out_stream.fail())
{
cout << "Output file opening failed.\n";
exit(1);
}
while (in_stream >> next)
{
in_stream.get(org_char);
switch(org_char)
{
case 'a':
case 'A':
enc_char = '1S';
break;
case 'd':
case 'D':
enc_char = '1B';
break;
case 'h':
case 'H':
enc_char = '1O';
break;
case 'i':
case 'I':
enc_char = '1Q';
break;
case 'j':
case 'J':
enc_char = '1X';
break;
case 'p':
case 'P':
enc_char = '1M';
break;
case 't':
case 'T':
enc_char = '1Y';
break;
default:
enc_char = org_char;
break;
}
out_stream.put(enc_char);
next++;
}
in_stream.close(); //function to close in_stream
out_stream.close(); // function to close out_stream
return 0;
}
Compiler Log:
Compiler: Default compiler
Executing g++.exe...
g++.exe "C:\unisa\cos112v\Question4.cpp" -o "C:\unisa\cos112v\Question4.exe" -L"C:\unisa\mingw\lib"
C:\unisa\cos112v\Question4.cpp:39:32: warning: multi-character character constant
C:\unisa\cos112v\Question4.cpp:43:32: warning: multi-character character constant
C:\unisa\cos112v\Question4.cpp:47:32: warning: multi-character character constant
C:\unisa\cos112v\Question4.cpp:51:32: warning: multi-character character constant
C:\unisa\cos112v\Question4.cpp:55:32: warning: multi-character character constant
C:\unisa\cos112v\Question4.cpp:59:32: warning: multi-character character constant
C:\unisa\cos112v\Question4.cpp:63:32: warning: multi-character character constant
Execution terminated
Compilation successful