Jump to content
Fórum Script Brasil
  • 0

Ajuda em C :> Criptografando e descriptografando


comum05

Question

Boas pessoal ,

Então to com uma dúvida, não consigo desenrolar meu código em C , com o CODEBLOCKS , tenho um exercício a fazer no qual postarei abaixo , e chego até uma parte, como poderão ver aonde vai para digitar a mensagem ele já cai pra linha de baixo direto para a parte de onde devo inserir a palavra chave , e não consigo mais fazer , quem puder ajudar fico agradecido

PROPOSTO:

Você é o programador mais experiente do FBI quando se trata de

criptografar mensagens que são enviadas para a INTERPOL e vice‐versa, e você deverá implementar

um programa que tenha a criptografia mais complexa já pensada pelo maior gênio contemporâneo da

computação, Elder Schemberger.

A criptografia embaralha a frase que deve ser enviada com uma frase‐chave digitada pelo usuário,

criando uma terceira frase, a qual poderá ser enviada entre as agencias de segurança sem qualquer

risco de ser lida pelas milícias interessadas em seu conteúdo.

Para embaralhar a string 1 com a string 2 é necessário preencher os índices pares da string 3 com os

elementos da string 1 e os ímpares com os elementos da string 2 até que os elementos de uma das

duas strings termine. Os demais elementos da string 3 serão preenchidos com os elementos da string

restante (seja da frase ou da chave). Espaços devem ser preenchidos com “!”.

Por exemplo:

Digite a mensagem a ser enviada: Ataque Capanema míssil.

Digite a chave de criptografia: Sábado chopp gelado.

String criptografada: AStaabqaudeo!!Ccahpoapnpe!mgae!lmaídsosil.

Seu programa deve fazer esse processo de criptografia e o processo de decriptografia. Escolha isso

com um menu no início do programa (Claro, não é possível decriptografar se não há algo

criptografado! Trate isso!).

Algoritmo a fazer ...:

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

int main(){

    int tamanho_mensagem=0, tamanho=0,tamanho_pchave=0,i=0,opc;
    char mensagem[100],pchave;

do{
        printf("\n        CODIGO DE CRIPTOGRAFIA    \n");
        printf("+--------------------------------------+\n");
        printf("|  1            Criptografa            |\n");
        printf("|  2            Descriptografa         |\n");
        printf("+--------------------------------------+\n");
        printf("|  0 ENCERRAR A EXECUCAO DO PROGRAMA!!!|\n");
        printf("+--------------------------------------+");
        printf("\n\nESCOLHA UMA DAS OPCOES: ");
        scanf("%d",&opc);
            switch(opc){
                case 1:{
                    printf("Digite a Frase: ");
                    gets(mensagem);
                    tamanho_mensagem = strlen(mensagem);
                    printf("\nDigite a Palavra Chave: ");
                    gets(pchave);
                    tamanho_pchave = strlen(pchave);
                    tamanho = tamanho_mensagem + tamanho_pchave;
                    }
            }
     }while(opc != 0);

return 0;
}

Quem puder dar um help fico agradecido, sou meio novato na linguagem e impaquei ali e não consigo mais fazer.

Link to comment
Share on other sites

4 answers to this question

Recommended Posts

  • 0

Olá!

O scanf lê apenas o número, mantendo no buffer o que não é utilizado. No caso ficou a quebra de linha no buffer. Assim, a função gets, ao ser chamada, recebe esta quebra de linha que ficou no buffer e já retorna. Para resolver o problema, mude o seu scanf para:

scanf("%d%*c", &opc);

o %*c informa ao scanf que deve ser lido um char. Devido ao asterisco, esse char será descartado e não armazenado em uma variável.

Abraços,

Marcelo Utikawa da Fonseca

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      152k
    • Total Posts
      651.5k
×
×
  • Create New...