Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I think I have working program but it keeps saying it can\'t open the file. I do

ID: 3540708 • Letter: I

Question

I think I have working program but it keeps saying it can't open the file.  I don't see anything wrong with the code.  can someone take a look and tell me what I am doing wrong?  Here is what I have so far.

#include <iostream>

#include <fstream>

#include <string>

using namespace std;

void mapitE(string,char[]);

void mapitD(string,char[]);

void encryptdecrypt(const string,const char[],int,string&);

int main()

{string ende[]={"encrypt","decrypt"},buffer,key,newbuffer="";

char filename[80],enmap[128],demap[128],again;

int i,maplength;

ofstream out;

ifstream in;

int choice;

do

{

cout<<"Enter 1 to encrypt, 2 to decrypt: ";

cin>>choice;

while(choice<1||choice>2)

      {cout<<"invalid choice ";

       cout<<"Enter 1 to encrypt, 2 to decrypt: ";

       cin>>choice;

       }

cout<<"Enter name of your file to "<<ende[choice-1]<<": ";

cin>>filename;

in.open(filename);       

if(in.fail())           

   { cout<<"input file did not open please check it ";

   system("pause");

   return 1;

   }

cout<<"Enter name of your output file: ";

cin>>filename;

out.open(filename);

cout<<"Enter your encryption key (max 128 characters): ";

cin>>key;

if(key.length()>128)

    {cout<<"key too long ";

     cout<<"Enter your encryption key (max 128 characters): ";

     cin>>key;

     }

maplength=key.length();

if(choice==1)

   mapitE(key,enmap);

else

   mapitD(key,demap);

getline(in,buffer);

while(in)

   {

   if(choice==1)

         encryptdecrypt(buffer,enmap,maplength,newbuffer);

   else

         encryptdecrypt(buffer,demap,maplength,newbuffer);

   out<<newbuffer;

   newbuffer.erase(0);

   getline(in,buffer);

         

   }  

out.close();

in.close();

in.clear();

out.clear();

newbuffer.erase(0);

cout<<"do it again(y/n)? ";

cin>>again;

}while(toupper(again)=='Y');

return 0;

}

void encryptdecrypt(const string buffer,const char map[],int len,string& newbuffer)

{int i=0;

char t,code;

for(i=0;i<buffer.length();i++)

    { //cout<<buffer[i]<<" "<<i<<endl;

    if(isalpha(buffer[i]))

         {if(islower(buffer[i]))

             code='a';

          else

             code='A';

          t=buffer[i]-code;

          //cout<<code<<" "<<buffer[i]<<" "<<t<<" "<<i<<endl;

          t=t+map[i%len];

          t=t%26;

          t=t+code;

          newbuffer.push_back(t);

          }

            

     else

        newbuffer.push_back(buffer[i]);

      }

newbuffer.push_back(' ');

}

void mapitE(string key,char map[])

{

int i;

for(i=0;i<key.length();i++)

     map[i]=key[i]-'a';

}

void mapitD(string key,char map[])

{

int i;

for(i=0;i<key.length();i++)

     map[i]=26-(key[i]-'a');

}

Explanation / Answer

please see here http://pastebin.com/AJUEaaYP