#include "utils.h"
void strrev(char x[])
{
for(int i=0;i<strlen(x);i++)
{ char schimb=x[i];
x[i]=x[strlen(x)-i];
x[strlen(x)-i]=schimb;}
}
void decode_caesar(int cheie, char mesaj[])
{
for(int i=0; i<strlen(mesaj); i++)
{
int copie=cheie;
while(copie)
{
if(mesaj[i]=='A')
{
mesaj[i]='Z';
}
else
{
if(mesaj[i]=='a')
{
mesaj[i]='z';
}
else
{
if(mesaj[i]=='0')
{
mesaj[i]='9';
}
else
{
mesaj[i]=mesaj[i]-1;
}
}
}
copie--;
}
}
}
void SolveTask2()
{
char cerinta[20];
fgets(cerinta, sizeof cerinta, stdin);
if(strcmp(cerinta,"caesar\n")==0) ///caesar
{
int cheie;
scanf("%d",&cheie);
char mesaj[1001];
fgets(mesaj, sizeof mesaj, stdin); ///pt buffer
fgets(mesaj, sizeof mesaj, stdin);
for(int i=0; i<strlen(mesaj); i++)
{
int copie=cheie;
while(copie)
{
if(mesaj[i]=='A')
{
mesaj[i]='Z';
}
else
{
if(mesaj[i]=='a')
{
mesaj[i]='z';
}
else
{
if(mesaj[i]=='0')
{
mesaj[i]='9';
}
else
{
mesaj[i]=mesaj[i]-1;
}
}
}
copie--;
}
}
for(int i=0;i<strlen(mesaj)-1;i++)
printf("%c",mesaj[i]);
///printf("\n");
}
if(strcmp(cerinta,"vigenere\n")==0)
{
char cheie[1001],text_criptat[1001],text_decriptat[1001];
fgets(cheie, sizeof cheie, stdin);
int dim_cheie=strlen(cheie)-1;
fgets(text_criptat, sizeof text_criptat, stdin);
for(int i=0; i<strlen(text_criptat); i++)
{
if(text_criptat[i]>='0' && text_criptat[i]<='9')
{
char scazut=i%dim_cheie+'0';
//printf("Scazutul este %d\n",scazut);
text_decriptat[i]=(text_criptat[i]-scazut+9)%9;
text_decriptat[i]+='0';
//printf("criptarea lui %c este %c\n",text_criptat[i],text_decriptat[i]);
}
else
{
char scazut=i%dim_cheie+'a';
//printf("Scazutul este %d\n",scazut);
text_decriptat[i]=(text_criptat[i]-scazut+26)%26;
text_decriptat[i]+='a';
}
}
for(int i=0; i<strlen(text_criptat)-1; i++)
printf("%c",text_decriptat[i]);
}
if(strcmp(cerinta,"addition\n")==0)
{
int cheie;
scanf("%d",&cheie);
char primul[1001];
fgets(primul, sizeof primul, stdin); ///pt buffer
fgets(primul, sizeof primul, stdin);
char doilea[1001];
fgets(doilea, sizeof doilea, stdin);
decode_caesar(cheie,primul);
decode_caesar(cheie,doilea);
strrev(primul);
strrev(doilea);
if(strlen(primul)>strlen(doilea))
{
for(int i=strlen(doilea); i<strlen(primul); i++)
{
doilea[i]='0';
}
}
if(strlen(doilea)>strlen(primul))
{
for(int i=strlen(primul); i<strlen(doilea); i++)
{
primul[i]='0';
}
}
/// for(int i=0; i<strlen(primul); i++)
// {
// printf("%c",primul[i]);
// }
//printf("\n");
// for(int i=0; i<strlen(doilea); i++)
// {
// printf("%c",doilea[i]);
// }
// printf("\n");
int addition=0;
char rezultat[1001]={0};
int contor=0,suma=0;
for(int i=1; i<strlen(primul); i++) ///au lungimea egala primul si doilea asa ar trb
{
int numar1=primul[i]-'0';
int numar2=doilea[i]-'0';
suma=numar1+numar2;
if(addition==1)
{
suma+=1;
}
if(suma>9)
{
suma=suma-10;
addition=1;
}
rezultat[contor]=suma+'0';
contor++;
/// printf("suma este %d",suma);
}
if(addition==1)
{
rezultat[contor]='1';
contor++;
}
strrev(rezultat);
for(int i=0;i<contor;i++)
{
printf("%c",rezultat[i]);
}
}
}