Ir ao conteúdo
  • Cadastre-se

Programa compila, depois da erro


Posts recomendados

Bom, sou meio novo em c, intão me desculpem a ignorância. É o seguinte, tenho que fazer um programa que faça criptografia de uma frase e depois mostro ela criptografada, e depois pegunto se quer descriptografar e depois a mostro também. Até ai tudo bem.

No caso eu peguei a frase, tranformei ela em caracteres da tabela ascii, conforme seus numero alt + ... e depois somei esses numero por 5, só para complicar mais um pouquinho.
o problema é o seguinte, tenho que declarar caracteres maiúsculos e minusculo, números e tambem pontuações,  pois a frase pode conter todos esse tipos de caracteres. 

LEMBRANDO, AINDA NÃO FIZ A PARTE DA DESCRIPTOGRAFIA, é simples, porém quero fazer dar certo a criptografia primeiro, depois só subtraio por 5 em uma funçao na escolah sim dentro do switch.
SEGUE O CODIGO:
 

#include <stdio.h>
#include <strings.h>
    
    char* criptografa(char* frase)
    {
        int i, j;
                //caracteres: Alfabeto minusculo, Alfabeto maiúsculo, pontuações, e numeros.
        char letras[] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x','y', 'z',
                         'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
                         '.', ' ',',', ':', ';', '?','!', '@', '#', '$','-', '(',  ')',    '{', '}', '_',                
                         '1','2','3','4','5','6','7','8','9'};
      
              //numeros que representam simbolos na Tabela Ascii (101 simbolos colocados).
          int numeros[] = { 1, 2, 3, 4, 5, 6, 7, 8, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,
                            45, 46, 47, 190, 191, 192, 193, 194, 195, 196,  197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216,
                          217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246,
                          247, 248, 249, 250};
        
        char* fraseCrypto;
        
        printf("%i", strlen(frase));
        
        // Passando por cada letra da palavra informada
        for(i = 0; i < strlen(frase); i++)
        {
            // Passa por cada letra para descobrir em qual posição está
            for(j = 0; j < strlen(letras); j++) 
            {
                if (frase == letras[j]) 
                {
                    fraseCrypto = numeros[j] + 5;
                }
            }
        }
        
        return fraseCrypto;
    }    
    
    
    int main ()
    {
        int i, j, sim=1, nao=2, escolha, frasedescripto, fraseCrypto;
        
        char frase[150], disc[150];
        char* fraseCryptografada;
        
        printf("Digite a frase desejada: ");
        gets(frase);
        fraseCryptografada = criptografa(frase);
        for(i = strlen(frase); i < strlen(fraseCryptografada); i++) 
        {
            fraseCryptografada = ' ';
        }
        // mostrando frase criptografada
        printf("Frase Criptografada: %s", fraseCryptografada);
    
        printf("\nDeseja descriptografar? ");    
        scanf ("%i",&escolha);    
    
    switch (escolha)
        {
            //sim
            case 1:
                    printf ("Você escolheu descriptografar");
                 //vou chamar função aqui para  descriptografar, ainda tenho que criala

                      break;
            //não
            case 2:
                    printf ("Você escolheu por não descriptografar ");
            break;
        }
        
    }

 

Link para o comentário
Compartilhar em outros sites

3 horas atrás, vangodp disse:

 

Não posso usar isso, pois não uso números inteiros de 1 a 250 sequenciados. Pois não quero alguns caracteres da tabela, uso por exemplo  1,2,3,40,42,50...

No seu caso somando letra mais numero inteiro ficaria por exemplo somando 5, ficaria 5 letras para frente.. Quero que fique 5 caracteres da tabela ascii para frente e não as letras.
Meu problema é mais o over flow. queria saber se tem como reduzir esses caracteres não pegando sequenciados. 

como eu faria para declarar eles no vetor?

 

Obrigado mesmo, pela atenção.



 

 

Link para o comentário
Compartilhar em outros sites

Por exemplo, Digitando a letra "a" esse char para mim cairia no numero 1. E ele na tabela ascii:  1=☺. minha criptografia seria somar 5. 6=♠.
e não somar a+ 5 = f, andando 5 letras para frente.

Não sei se entendi errado sua logica.
 

Como disse, minha criptografia está certa, pelo menos a ideia. Se não estivesse não estaria nen compilando, esta dando erro de execução porq? seria esse monte de char que tenho que declarar? Disse para fazer um for.. como declaro isso no vetor? Tem outro jeito de declarar esses char a não ser o que eu fiz?

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!