Ir para conteúdo
Fórum Script Brasil
  • 0

Leonardo Prass

Pergunta

#include <iostream>
#include <string.h>
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
#include<fstream>

using namespace std;
////Com Espaços e Numeros
void cript_espnum()
{
      char frase[30],frase_cript[30],chave[10],chave_estendida[30],alfabeto[26][26],a='A',z,aux_linha,aux_coluna;
      int i,j;
      for(i=0;i<26;i++)
      {
            z=a;
            for(j=0;j<26;j++)
            {
                  alfabeto[i][j]=z;
                  if(z=='Z')
                  {
                        z='A';
                  }
                  else
                  {
                        z++;
                  }
            }
      a++;
      }
      setbuf(stdin,NULL);
      cout << "Digite a frase a ser criptografada:";
      cin.getline(frase,30);
      cout << "Digite a chave:";
      cin >> chave;
      for(i=0;i<strlen(frase);i++)
      {
            frase[i]=toupper(frase[i]);
      }
      for(i=0;i<strlen(chave);i++)
      {
            chave[i]=toupper(chave[i]);
      }
      for(int i=0,cont=0;i<strlen(frase);i++)
    {
        if(chave[cont] != '\0')
            {
                  chave_estendida[i] = chave[cont];
            }
            else
            {
                  cont = 0;
                  chave_estendida[i] = chave[cont];
            }
            cont++;
      }
      chave_estendida[strlen(frase)] = '\0';
      for(int i=0;i<strlen(frase);i++)
      {
            if(frase[i]>=65 && frase[i]<=90)
            {
                 aux_linha=frase[i]-65;
                 aux_coluna=chave_estendida[i]-65;
                 frase_cript[i]=alfabeto[aux_linha][aux_coluna];
            }
            else
            {
                 frase_cript[i]=frase[i];
            }

      }
      cout << "Frase criptografada:" << endl;
      cout << frase_cript<< endl;
      exit(0);
}
//Com Espaços
void cript_espaco()
{
      char frase[30],frase_cript[30],chave[10],chave_estendida[30],alfabeto[26][26],a='A',z,aux_linha,aux_coluna;
      int i,j;
      for(i=0;i<26;i++)
      {
            z=a;
            for(j=0;j<26;j++)
            {
                  alfabeto[i][j]=z;
                  if(z=='Z')
                  {
                        z='A';
                  }
                  else
                  {
                        z++;
                  }
            }
      a++;
      }
      setbuf(stdin,NULL);
      cout << "Digite a frase a ser criptografada:";
      cin.getline(frase,30);

      cout << "Digite a chave:";
      cin >> chave;
      for(i=0;i<strlen(frase);i++)
      {
            frase[i]=toupper(frase[i]);
      }
      for(i=0;i<strlen(chave);i++)
      {
            chave[i]=toupper(chave[i]);
      }
      for(int i=0,cont=0;i<strlen(frase);i++)
    {
        if(chave[cont] != '\0')
            {
                  chave_estendida[i] = chave[cont];
            }
            else
            {
                  cont = 0;
                  chave_estendida[i] = chave[cont];
            }
            cont++;
      }
      for(int i=0;i<strlen(frase);i++)
      {
            if(frase[i]==32)
            {
                  frase_cript[i]=32;
            }
            else
            {
                 aux_linha=frase[i]-65;
                 aux_coluna=chave_estendida[i]-65;
                 frase_cript[i]=alfabeto[aux_linha][aux_coluna];
            }

      }
      cout << "Frase criptografada:" << endl;
      cout << frase_cript << endl;
      exit(0);
}
void descript()
{
char frase_cript[500],chave[10],chave_estendida[500],alfabeto[26][26],aux,frase_descrip[500],auxl;
int i;
setbuf(stdin,NULL);
ifstream arquivo_entrada;
cout << "Digite a frase criptografada:";
cin.getline(frase_cript,500);
cout << "Digite a chave utilizada:";
cin >> chave;
for(i=0;i<strlen(frase_cript);i++)
{
      frase_cript[i]=toupper(frase_cript[i]);
}
for(i=0;i<strlen(chave);i++)
{
      chave[i]=toupper(chave[i]);
}
char a = 'A';
char z;
      for (int i = 0; i < 26; i++)
      {
            z = a;
            for (int j = 0; j < 26; j++)
            {
                  alfabeto[i][j] = z;
                  if (z == 'Z')
                  {
                        z = 'A';
                  }
                  else
                  {
                        z++;
                  }
            }
            a++;
      }
    for(int i=0,cont=0;i<strlen(frase_cript);i++)
    {
        if(chave[cont] != '\0')
            {
                  chave_estendida[i] = chave[cont];
            }
            else
            {
                  cont = 0;
                  chave_estendida[i] = chave[cont];
            }
            cont++;
      }
      chave_estendida[strlen(frase_cript)] = '\0';
      cout << chave_estendida << endl;
      for(int i=0;i<strlen(frase_cript);i++)
      {
            aux=chave_estendida[i]-65;
                  for(int j=0;j<26;j++)
                  {
                        if(alfabeto[j][aux]==frase_cript[i])
                        {
                              auxl=j+65;
                        }
                  }
                   frase_descrip[i]=auxl;
      }

        cout << "Frase descriptografada:" << endl;
		cout << frase_descrip << endl;
		exit(0);
}



//Função criptografa
void criptografa()
{
	char alfabeto[26][26],frase[30];
	char chave[10];
    char a = 'A';
    char z;
		for (int i = 0; i < 26; i++)
		{
			z = a;
			for (int j = 0; j < 26; j++)
			{
				alfabeto[i][j] = z;
				if (z == 'Z')
				{
					z = 'A';
				}
				else
				{
					z++;
				}
			}
			a++;
		}
		setbuf(stdin,NULL);
		cout << "Digite uma frase:";
		cin.getline(frase, 30);
		for (int i = 0; i < strlen(frase); i++)
            {
                  frase[i]=toupper(frase[i]);
            }
            for (int i = 0; i < strlen(frase); i++)
            {
			if (frase[i] == ' ')
			{
				for (int y = i; y < strlen(frase); y++)
					frase[y] = frase[y + 1];
					i--;
			}
            }
		cout << frase << endl;
		cout << "Digite a chave:";
		cin >> chave;
		for(int i=0;i<strlen(chave);i++)
            {
                  chave[i]=toupper(chave[i]);
            }
		char aux[30];


		for (int i = 0, cont = 0; i < strlen(frase); i++)
		{
			if (chave[cont] != '\0')
			{
				aux[i] = chave[cont];
			}
			else
			{
				cont = 0;
				aux[i] = chave[cont];
			}
			cont++;
		}
		aux[strlen(frase)] = '\0';
		cout<<aux << endl;

		char fraseaux[30],auxl,auxc,linha,frase_descript[30];
        for(int i=0;i<strlen(frase);i++)
        {
            auxl=frase[i]-65;
            auxc=aux[i]-65;
            fraseaux[i]=alfabeto[auxl][auxc];
        }
        exit(0);
}
//Função menu interno
void Menuinterno ()
{
      char opcao;
      while(opcao!='a'||opcao!='b'||opcao!='c')
      {
            system("cls");
            cout << "\n\tCriptografar";
            cout << "\n\na - Sem espaco";
            cout << "\n\nb - Manter os espaco";
            cout << "\n\nc - Manter numeros";
            cout << "\n\nEscolha uma opcao: ";
            cin >> opcao;
            switch(opcao)
            {
            case 'a':
                criptografa();
                  break;
            case 'b':
                  cript_espaco();
                  break;
            case 'c':
                  cript_espnum();
                  break;
            default:
                  cout << "Opcao Invalida!Tente novamente!";
                  system("pause");
            }
      }
}
//Função de menu
void Menu()
{
      char opcao;
      while(1)
      {
            system("cls");
            cout<< "\n\tPrograma de Criptografia";
            cout<<"\n\n 1 - Criptografar Arquivo";
            cout << "\n\n 2 - Descriptografar Arquivo";
            cout << "\n\n 3 - Creditos";
            cout << "\n\n 4 - Sair";
            cout << "\n\n Informe a opcao desejada: ";
            cin >> opcao;
            setbuf(stdin,NULL);
            switch(opcao)
            {
            case '1':
                  Menuinterno();
                  break;
            case '2':
                  descript()
;                  break;
            case '3':
                  cout << "\n\nProgramadores:";
                  cout << " Leonardo\n";
                  system("pause");
                  break;
            case '4':
                  cout << "\nFinalizando o programa!";
                  exit(0);
                  break;
            default:
                  cout << "Opcao Invalida!Tente novamente...\n";
                  system("pause");

            }
      }
}
int main()
{
      Menu();
}

 

Eu gostaria que Alguém me ajuda-se a refinar este código e a colocar arquivo nele para poder ler um arquivo de texto ao invés de escrever uma frase só, e outra um menu que retornasse .

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...