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

(Resolvido) ajuda em codigo


eynan

Pergunta

Ola estou com um problema/duvida ^^

o codio é o seguinte:

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

char converte(char letra){
     switch(letra){
    case 'a': letra = 'e'; break;
    case 'b': letra = 'f'; break;
    case 'c': letra = 'g'; break;
    case 'd': letra = 'h'; break;
    case 'e': letra = 'i'; break;
    case 'f': letra = 'j'; break;
    case 'g': letra = 'k'; break;
    case 'h': letra = 'l'; break;
    case 'i': letra = 'm'; break;
    case 'j': letra = 'n'; break;
    case 'k': letra = 'o'; break;
    case 'l': letra = 'p'; break;
    case 'm': letra = 'q'; break;
    case 'n': letra = 'r'; break;
    case 'o': letra = 's'; break;
    case 'p': letra = 't'; break;
    case 'q': letra = 'u'; break;
    case 'r': letra = 'v'; break;
    case 's': letra = 'x'; break;
    case 't': letra = 'y'; break;
    case 'u': letra = 'w'; break;
    case 'v': letra = 'z'; break;
    case 'x': letra = 'a'; break;
    case 'y': letra = 'b'; break;
    case 'w': letra = 'c'; break;
    case 'z': letra = 'd'; break;
    
}



return letra;
}
 char desconverte(char letra){
     switch(letra){
    case 'e': letra = 'a'; break;
    case 'f': letra = 'b'; break;
    case 'g': letra = 'c'; break;
    case 'h': letra = 'd'; break;
    case 'i': letra = 'e'; break;
    case 'j': letra = 'f'; break;
    case 'k': letra = 'g'; break;
    case 'l': letra = 'h'; break;
    case 'm': letra = 'i'; break;
    case 'n': letra = 'j'; break;
    case 'o': letra = 'k'; break;
    case 'p': letra = 'l'; break;
    case 'q': letra = 'm'; break;
    case 'r': letra = 'n'; break;
    case 's': letra = 'o'; break;
    case 't': letra = 'p'; break;
    case 'u': letra = 'q'; break;
    case 'v': letra = 'r'; break;
    case 'x': letra = 's'; break;
    case 'y': letra = 't'; break;
    case 'w': letra = 'u'; break;
    case 'z': letra = 'v'; break;
    case 'a': letra = 'x'; break;
    case 'b': letra = 'y'; break;
    case 'c': letra = 'w'; break;
    case 'd': letra = 'z'; break;
    
}


return letra;
}



int main()
{
   int i;
int x,y,resp;
char cod_str[100],MSN[100],rec[1];


do{

  
        printf("#####Criptografor#####\n\n");
       
  
        do{
        printf("1- para criptografar \n");
        printf("2- para descriptografar\n");
        scanf("%d",&resp);
        }
        while( resp!=1 && resp!=2);
        
        if(resp==1)
        {
          
       printf("Digite sua Mensagem:\n");
       scanf("%s",MSN);
     
     for(i=0;i<100;i++)
                       cod_str[i] = converte (MSN[i]);
     printf("\n\n");
   ;
     printf(" a mensagem virou:  %s\n\n",cod_str);
     printf("\n\n");
           
         }
      else
      {
           printf("Digite sua Mensagem:\n");
       scanf("%s",MSN);
     
     for(i=0;i<100;i++)
                       cod_str[i] = desconverte (MSN[i]);
     printf("\n\n");
   ;
     printf(" a mensagem virou:  %s\n\n",cod_str);
     printf("\n\n");
     }      
     
    printf(" Digite 0 para sair e 1 para continuar\n\n");
    scanf("%d",&y);
  }while (y!=0);
  
 printf("\n\n Xaus seu merda!!");
getch(); 
}

O problema é o seguinte eu não entendo porquê no segundo " do " se eu entrar com uma letra ele faz uma rotação infinita no do.

e qual a função para limpar te no dev c++ porque o clrscl() não funciona.

obg.

Editado por eynan
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Use as tags

, 

É que o código de uma letra não é nem 1 ou 2, semdo assim ele volta pro começo do "do{..." e o scanf não pega apenas um numero ou uma letra... ele pega o buffer do teclado, justamente por isso que ele não é usado em aplicações "reais", o que esta acontecendo provavelmente é que o scanf esta pegando algo mais q já esta no buffer do teclado...

o que você pode fazer para resolver isso, apesar de ser uma gambiarra é usar "fflush(stdin)" antes do scanf.

clrscl() é só pra Unix/Linux, em windows pode-se usar "system("cls")" ou construir uma função especifica para isso, mas ai já requere ter um conhececimento mais avançado de c e windows.

Link para o comentário
Compartilhar em outros sites

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
      152k
    • Posts
      651,7k
×
×
  • Criar Novo...