Untitled

mail@pastecode.io avatar
unknown
plain_text
3 years ago
5.2 kB
1
Indexable
#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]);

        }



    }









}