Trouble with assignment in C
Hi all,
I'm having some trouble with an assignment where I have to encrypt or decrypt a four digit integer. The encryption and decryption isn't really a problem for me, it's the section for user options. Every time I come to the point where the user has the option to exit, I seem to have trouble executing that task. Please see below.
Code:
#include <stdio.h>
#include <stdlib.h>
void encrypt(int number1);
void decrypt(int number2);
int main(void)
{
int number;
char option, option2;
printf("Encode or Decode? (e/d)");
scanf("%c", &option);
if(option == 'e'){
printf("Enter four digit number: ");
scanf("%d", &number);
encrypt(number);
}
else if(option == 'd'){
printf("Enter four digit number: ");
scanf("%d", &number);
decrypt(number);
}
else{
printf("please choose an option.");
}
printf("\nContinue? (y/n) ");
scanf("%c", &option2);
if(option2 == 'y'){
do{
printf("Encode or Decode? (e/d)");
scanf("%c", &option);
if(option == 'e'){
printf("Enter four digit number: ");
scanf("%d", &number);
encrypt(number);
}
else if(option == 'd'){
printf("Enter four digit number: ");
scanf("%d", &number);
decrypt(number);
}
else{
printf("please choose an option.");
}
printf("\nContinue? (y/n) ");
scanf("%c", &option2);
}while(option2 != 'n');
}
else{
printf("Please remember to secure your password before exiting.\n");
}
system("pause");
return 0;
}
void encrypt(int number1)
{
int i;
int j = 0;
int temp;
int code[4];
int a, b, c, d, m, n, o, p;
for(i = 1000; i >= 1; i /= 10){
temp = number1 % i;
code[j] = (number1 - temp) / i;
number1 = temp;
j++;
}
m = code[0];
n = code[1];
o = code[2];
p = code[3];
m += 7, n += 7, o += 7, p += 7; /*add 7 to digit*/
m %= 10, n %= 10, o %= 10, p %= 10; /*replace digit with remainder of 10*/
a = m * o/m; /*swap first digit with third*/
c = o * m/o; /*swap third digit with first*/
b = n * p/n; /*swap second digit with fourth*/
d = p * n/p; /*swap second digit with fourth*/
printf("Encrypted number is: %d%d%d%d", a, b, c, d); /*print new number*/
}
void decrypt(int number2)
{
int t = 0;
int s;
int temp;
int code[4];
int a, b, c, d, i, j, k, l;
for(s = 1000; s >= 1; s /= 10){
temp = number2 % s;
code[t] = (number2 - temp) / s;
number2 = temp;
t++;
}
i = code[0];
j = code[1];
k = code[2];
l = code[3];
a = i * k/i; /*swap first digit with third*/
c = k * i/k; /*swap third digit with first*/
b = j * l/j; /*swap second digit with fourth*/
d = l * j/l; /*swap second digit with fourth*/
a += 3, b += 3, c += 3, d += 3; /*simplified - remainder of ten, then minus seven*/
printf("Decrypted number is: %d%d%d%d", a, b, c, d); /*print new number*/