|
![]() |
Overclock.net - Overclocking.net > Software, Programming and Coding > Coding and Programming > Application Programming | |
Complete c++ decode program
|
||
![]() |
|
|
LinkBack | Thread Tools |
|
|
#1 (permalink) | |||||||||||||
|
Folding Fanatic
![]() |
Code:
#include <iostream>
#include <iomanip>
#include <ctype.h>
using namespace std;
char revCaesar(char);
char convPunct(char);
char convDigit(char);
char convRest (char);
int main()
{
char ch;
cin >> ch;
while (ch)
{
if (isalpha(ch))
{
revCaesar(ch);
}
else if (ispunct(ch))
{
convPunct(ch);
}
else if (isdigit(ch))
{
convDigit(ch);
}
else
convRest(ch);
cout<<ch;
cin>>ch;
}
system ("pause");
return 0;
}
//Function 1 - undoes the Caesar Cipher
char revCaesar(char ch)
{
if(isupper(ch))
{
if(ch <= 'D' and ch >= 'Z')
{
int ch;
ch = ch - 3;
return ch;
}
else
switch(ch)
{
case 'A':
ch = 'X';
break;
case 'B':
ch = 'Y';
break;
case 'C':
ch = 'Z';
break;
}
return ch;
}
else
{
if(ch <= 'd' or ch >= 'z')
{
int ch;
ch = ch - 3;
return ch;
}
else
{
char s;
switch(ch)
{
case 'a':
s = 'x';
break;
case 'b':
s = 'y';
break;
case 'c':
s = 'z';
break;
}
}
return ch;
}
}
//Function 2
char convPunct(char ch)
{
char s;
switch(ch)
{
case '0':
s = ',';
break;
case '1':
s = '.';
break;
case '2':
s = '$';
break;
case '3':
s = '&';
break;
case '4':
s = '%';
break;
case '5':
s = '*';
break;
case '6':
s = '(';
break;
case '7':
s = ')';
break;
case '8':
s = '?';
break;
case '9':
s = '!';
break;
}
}
//Function 3
char convDigit(char ch)
{
switch(ch)
{
case '!':
ch = '0';
break;
case ',':
ch = '1';
break;
case ')':
ch = '2';
break;
case '(':
ch = '3';
break;
case '?':
ch = '4';
break;
case '-':
ch = '5';
break;
case '&':
ch = '6';
break;
case '$':
ch = '7';
break;
case '.':
ch = '8';
break;
case '+':
ch = '9';
break;
}
}
//Function 4
char convRest(char ch)
{
if( int ch = 22)
{
ch = ' ';
return ch;
}
else if( int ch = 21)
{
ch = '"\n"';
return ch;
}
else
return ch;
}
|
|||||||||||||
|
|
|
|
|
#2 (permalink) | |||||||||||||
|
Overclocker
![]()
Join Date: Oct 2006
Location: Levittown,PA / Penn State
Posts: 1,925
Rep: 86
![]() Unique Rep: 76
Trader Rating: 0
|
Quote:
you never change the value of ch. IE ch = convDigit(ch); or you can send it by reference initialize convDigit ect like char convDigit(char &ch) and dont use the variable s, just change the value of ch.
__________________
|
|||||||||||||
|
|
|
|
|
#3 (permalink) | |||||||||||||
|
Folding Fanatic
![]() |
I changed my int main to this,
Code:
int main()
{
char ch;
cin >> ch;
while (ch)
{
if (isalpha(ch))
{
ch == revCaesar(ch);
}
else if (ispunct(ch))
{
ch == convPunct(ch);
}
else if (isdigit(ch))
{
ch == convDigit(ch);
}
else
{
ch == convRest(ch);
}
cout<<ch;
cin>>ch;
}
system ("pause");
return 0;
}
I also changed all of the 's' to ch in the switch statements. Any other ideas?
Last edited by tofunater : 10-16-09 at 07:17 PM |
|||||||||||||
|
|
|
|
|
#4 (permalink) | ||||||||||
|
ATI Enthusiast
![]() |
Quote:
__________________
there are only 10 kind of people in this world, those who understand ternary, those who don't, and then those who don't give a damn. I see in Fight Club the strongest and smartest men who've ever lived. I see all this potential, and I see squandering... So bye-bye, miss american pie,gamervivek has left the building. Ati Tray Tools vs CCC
|
||||||||||
|
|
|
|
|
#5 (permalink) | |||||||||||||
|
Folding Fanatic
![]() |
Alright, revised code is as follows:
Code:
#include <iostream>
#include <iomanip>
#include <ctype.h>
using namespace std;
char revCaesar(char);
char convPunct(char);
char convDigit(char);
char convRest (char);
int main()
{
char ch;
cin >> ch;
while (ch)
{
if (isalpha(ch))
{
ch = revCaesar(ch);
}
else if (ispunct(ch))
{
ch = convPunct(ch);
}
else if (isdigit(ch))
{
ch = convDigit(ch);
}
else
{
ch = convRest(ch);
}
cout<<ch;
cin>>ch;
}
system ("pause");
return 0;
}
//Function 1 - undoes the Caesar Cipher
char revCaesar(char ch)
{
if(isupper(ch))
{
if(ch >= 'D' and ch <= 'Z')
{
ch = ch - 3;
return ch;
}
else
switch(ch)
{
case 'A':
ch = 'X';
break;
case 'B':
ch = 'Y';
break;
case 'C':
ch = 'Z';
break;
}
return ch;
}
else if(ch >= 'd' or ch <= 'z')
{
ch = ch - 3;
return ch;
}
else
{
switch(ch)
{
case 'a':
ch = 'x';
break;
case 'b':
ch = 'y';
break;
case 'c':
ch = 'z';
break;
}
return ch;
}
}
//Function 2
char convPunct(char ch)
{
switch(ch)
{
case '0':
ch = ',';
break;
case '1':
ch = '.';
break;
case '2':
ch = '$';
break;
case '3':
ch = '&';
break;
case '4':
ch = '%';
break;
case '5':
ch = '*';
break;
case '6':
ch = '(';
break;
case '7':
ch = ')';
break;
case '8':
ch = '?';
break;
case '9':
ch = '!';
break;
}
}
//Function 3
char convDigit(char ch)
{
switch(ch)
{
case '!':
ch = '0';
break;
case ',':
ch = '1';
break;
case ')':
ch = '2';
break;
case '(':
ch = '3';
break;
case '?':
ch = '4';
break;
case '-':
ch = '5';
break;
case '&':
ch = '6';
break;
case '$':
ch = '7';
break;
case '.':
ch = '8';
break;
case '+':
ch = '9';
break;
}
}
//Function 4
char convRest(char ch)
{
if( int ch = 22)
{
ch = ' ';
return ch;
}
else if( int ch = 21)
{
ch = '"\n"';
return ch;
}
else
return ch;
}
|
|||||||||||||
|
|
|
|
|
#6 (permalink) |
|
Programmer
|
function 2 and 3 didn't return a value after making the return ch; after the switch's it looks like it works. i have no idea if its working properly tho.
Code:
#include <iostream>
#include <iomanip>
#include <ctype.h>
using namespace std;
char revCaesar(char);
char convPunct(char);
char convDigit(char);
char convRest (char);
int main()
{
char ch;
cin >> ch;
while (ch)
{
if (isalpha(ch))
{
ch = revCaesar(ch);
}
else if (ispunct(ch))
{
ch = convPunct(ch);
}
else if (isdigit(ch))
{
ch = convDigit(ch);
}
else
{
ch = convRest(ch);
}
cout<<ch;
cin>>ch;
}
system ("pause");
return 0;
}
//Function 1 - undoes the Caesar Cipher
char revCaesar(char ch)
{
if(isupper(ch))
{
if(ch >= 'D' && ch <= 'Z')
{
ch = ch - 3;
return ch;
}
else
switch(ch)
{
case 'A':
ch = 'X';
break;
case 'B':
ch = 'Y';
break;
case 'C':
ch = 'Z';
break;
}
return ch;
}
else if(ch >= 'd' || ch <= 'z')
{
ch = ch - 3;
return ch;
}
else
{
switch(ch)
{
case 'a':
ch = 'x';
break;
case 'b':
ch = 'y';
break;
case 'c':
ch = 'z';
break;
}
return ch;
}
}
//Function 2
char convPunct(char ch)
{
switch(ch)
{
case '0':
ch = ',';
break;
case '1':
ch = '.';
break;
case '2':
ch = '$';
break;
case '3':
ch = '&';
break;
case '4':
ch = '%';
break;
case '5':
ch = '*';
break;
case '6':
ch = '(';
break;
case '7':
ch = ')';
break;
case '8':
ch = '?';
break;
case '9':
ch = '!';
break;
}
return ch;
}
//Function 3
char convDigit(char ch)
{
switch(ch)
{
case '!':
ch = '0';
break;
case ',':
ch = '1';
break;
case ')':
ch = '2';
break;
case '(':
ch = '3';
break;
case '?':
ch = '4';
break;
case '-':
ch = '5';
break;
case '&':
ch = '6';
break;
case '$':
ch = '7';
break;
case '.':
ch = '8';
break;
case '+':
ch = '9';
break;
}
return ch;
}
//Function 4
char convRest(char ch)
{
if( int ch = 22)
{
ch = ' ';
return ch;
}
else if( int ch = 21)
{
ch = '"\n"';
return ch;
}
else
return ch;
}
__________________
90% of statistics are made up on the spot. including this one.
|
|
|
|
|
|
#7 (permalink) | |||||||||||||
|
Folding Fanatic
![]() |
Any idea why functions 2 and 3 don't return a value?
|
|||||||||||||
|
|
|
|
|
#9 (permalink) | |||||||||||||
|
Folding Fanatic
![]() |
Changed, but now I'm outputting letters with annunciation symbols above them instead of symbols, and mathematical signs instead of numbers ...
|
|||||||||||||
|
|
|
![]() |
| Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
| Thread Tools | |
|
|