Connecting Tech Pros Worldwide Forums | Help | Site Map

hi need help in 2 projects ..:))

Newbie
 
Join Date: Nov 2008
Posts: 2
#1: Nov 21 '08
hello my friends .my first problem...i ve develop an algorith of the casear encryption but i have an error and i cant make it work..the decryption works fine but i have problem with the encryption and an error here is the error it seems right but dunoo "%s" -= "Z" - "A"; c2016..:( anyone could help..


#include <stdio.h>
#include <string.h>

void menu ( void ) {
printf("Please enter a number: \n"
"1-Encrypt\n"
"2-Decrypt\n"
"3-Exit\n"
"prompt > ");
fflush( stdout );
}

int getchoice ( void ) {
char buff[BUFSIZ];
int choice = 0;
do {
menu();
if ( fgets( buff, sizeof buff, stdin ) != NULL ) {
/* success reading a line, does it make sense? */
if ( sscanf( buff, "%d", &choice ) != 1 ) {
printf( "Enter a number\n" );
}
} else {
/* user EOF, just exit now */
choice = 3;
}
} while ( choice < 1 || choice > 3 );
return choice;
}

void encode ( void )
{
char buff[BUFSIZ];
int i = 0;
int shift_value;
printf( "Doing encrypt\n" );
printf("\nPlease enter the text you wish to encrypt: ");
fgets(buff, sizeof(buff), stdin);
if ("%s" > "Z")
{
"%s" -= "Z" - "A";
}
printf("\nEnter your encryption shift value (anything from +-1 to 25): ");
scanf ("%i", &shift_value);



{
while ( buff[i] != '\0' )
{
buff[i] = buff[i] + shift_value;
i++;

}
}
printf("\n Your encrypted text is: %s \n", buff);
}
void decode ( void )
{
char buff[BUFSIZ];
int i = 0;
int shift_value;
printf( "Doing decrypt\n" );
printf("\nPlease enter the text you wish to decrypt: ");
fgets(buff, sizeof(buff), stdin);
printf("\nEnter your encryption shift value (anything from +-1 to 25): ");
scanf ("%i", &shift_value);

{
while ( buff[i] != '\0' )
{
buff[i] = buff[i] - shift_value;
i++;
}
}
printf("\nYour decrypted text is: %s \n", buff);
}
int main ( ) {
int choice;
while ( (choice=getchoice()) != 3 ) {
if ( choice == 1 ) {

encode();
} else
if ( choice == 2 ) {
decode();
}
}


return 0;
}


well thats my first problem my second is that i have made 2 separate codes for the affine algorith encryption decryption but whenever i try to make them under a case or if so i can have a simple menu like 1) encryption 2)decryption it always dont work...:(((

here is the code for encryption
#include<stdio.h>
#include<string.h>
void main()
{
int ch,a1,b1,a,b,c,d,d1[15],h,n,i=0;
char str1[80],ek[80];
printf("Dwse to keimeno\n");
gets(str1);
do
{
printf("Dwse to kleidi\na:");
scanf("%d",&a);
printf("\nb:");
scanf("%d",&b);
a1=a;
b1=b;
b=26;
d=1;
while(d!=0)
{


c=a/b;

d=a%b;
d1[i]=d;
a=b;
b=d;
i=i++;



}

n=i-1;





if(d1[n-1]==1)
{
printf("\nOi ariumoi einai prvtoi metaji tous\n\n");
ch=1;

}
else
{
printf("\nOi ariumoi den einai prvtoi metaji tous\n\n");
ch=0;
}
}
while(ch==0);
a=a1;
b=b1;
printf("\nTo kleidi einai (%d,%d):\n",a,b);

printf("\nTo keimeno einai %s to mikos toy %d \n",str1,strlen(str1));
n=strlen(str1);

ek[n]='\0';
h=strlen(ek);
for (i=0; i<h; i++)
{
str1[i]=str1[i]-97;
ek[i]=((a*str1[i]+b)%26)+97;
printf("%c -> %d to \n",str1[i]+97,str1[i]);
}

printf("\n\nTo kriptografhmeno keimeno einai:%s \n",ek);
for (i=0; i<h; i++)
{
printf("%c -> %d \n",ek[i],ek[i]-97);
}
printf("To kriptografhmeno keimeno einai:%s \n\n",ek);

}


and here is for the decription ..any ideas how this can be made in one single code with the simple if or case menu..:)
#include<stdio.h>
#include<string.h>
void mul(int a1,int b1,int *d,int *x,int *y);
void main()
{
int ch,xx,a1,b1,a,b,c,d,d1[15],h,n,x,key,y,i=0;
char str1[80],dk[80];
printf("Dwse to keimeno\n");
gets(str1);
do
{
printf("Dwse to kleidi\na:");
scanf("%d",&a);
printf("\nb:");
scanf("%d",&b);

a1=a;
b1=b;
b=26;
mul(a,b,&d,&x,&y);
key=x;
if (key<0)
{
key=26+key;
}
printf("\n1/a:%d \n",key);

d=1;
while(d!=0)
{


c=a/b;

d=a%b;
d1[i]=d;
a=b;
b=d;
i=i++;



}

n=i-1;





if(d1[n-1]==1)
{
printf("\nOi ariumoi einai prvtoi metaji tous\n\n");
ch=1;

}
else
{
printf("\nOi ariumoi den einai prvtoi metaji tous\n\n");
ch=0;
}
}
while(ch==0);
a=a1;
b=b1;
printf("\nTo kleidi einai (%d,%d):\n",a,b);

printf("\nTo keimeno einai %s to mikos toy %d \n",str1,strlen(str1));
n=strlen(str1);

dk[n]='\0';
h=strlen(dk);
for (i=0; i<h; i++)
{
str1[i]=str1[i]-97;
xx=(str1[i]-b)%26;/*to kano se periptosi pou o b einai megalos*/
if (xx<0)
{
xx=26+xx;
}

dk[i]=((key*(xx))%26)+97;
printf("%c -> %d\n",str1[i]+97,str1[i]);
}
printf("\n\nTo kriptografhmeno keimeno einai:%s \n",dk);
for (i=0; i<h; i++)
{
printf("%c -> %d\n",dk[i],dk[i]-97);
}
printf("To kriptografhmeno keimeno einai:%s \n\n",dk);

}

void mul(int a1,int b1,int *d1,int *x1,int *y1)
{int c,d,x,y;
if(b1==0)
{
*d1=a1;
*x1=1;
*y1=0;


}
else{
d=*d1;
x=*x1;
y=*y1;



c=a1%b1;

mul(b1,c,&d,&x,&y);


*d1=d;
*x1=y;
*y1=x-(a1/b1)*(y);

}

}


thank you for the time you gonna spend in helping me..:))
ps the text in the printf is in greek as i m from greece;)
:gOOd:

Expert
 
Join Date: Mar 2008
Location: Naperville, Illinois U.S.
Posts: 831
#2: Nov 21 '08

re: hi need help in 2 projects ..:))


The following code snippet is from the function named encode. I can't identify the line numbers because you didn't use CODE tags [hint].
Expand|Select|Wrap|Line Numbers
  1. fgets(buff, sizeof(buff), stdin);
  2. if ("%s" > "Z")
  3. {
  4. "%s" -= "Z" - "A";
  5. }
These two uses of "%s" are totally illegal and should have raised compiler errors.

Another hint, it is a lot easier for us to help if you paste the compiler errors into your post, being careful to translate the line numbers in the errors so they correspond to the line numbers in the code excerpt you provide for us.

Instead of "%s" perhaps you meant *buf; but I can't be sure because I'm not sure what you're doing.

Instead of "A" and "Z" you probably meant 'A' and 'Z'. The difference here is between string literals and character constants.
Newbie
 
Join Date: Nov 2008
Posts: 2
#3: Nov 21 '08

re: hi need help in 2 projects ..:))


Quote:

Originally Posted by donbock

The following code snippet is from the function named encode. I can't identify the line numbers because you didn't use CODE tags [hint].

Expand|Select|Wrap|Line Numbers
  1. fgets(buff, sizeof(buff), stdin);
  2. if ("%s" > "Z")
  3. {
  4. "%s" -= "Z" - "A";
  5. }
These two uses of "%s" are totally illegal and should have raised compiler errors.

Another hint, it is a lot easier for us to help if you paste the compiler errors into your post, being careful to translate the line numbers in the errors so they correspond to the line numbers in the code excerpt you provide for us.

Instead of "%s" perhaps you meant *buf; but I can't be sure because I'm not sure what you're doing.

Instead of "A" and "Z" you probably meant 'A' and 'Z'. The difference here is between string literals and character constants.

yes i meant that but i n that case it appear me 3 errors i m not at home at current time and i dont have a compiler i just have the codes with me so if it s not very hard can you compile to see the errors yourself..i m from a pda ..
Reply