Logo Hardware.com.br
Nathalia Pavan
Nathalia Pav... Novo Membro Registrado
2 Mensagens 0 Curtidas

Algoritmo de Substituição em C

#1 Por Nathalia Pav... 16/11/2015 - 20:07
Galera, sou nova por aqui e preciso de um help!! Estou fazendo um código em C com Cifra de César. Mas ao digitar uma frase (com espaços), o programa não executa como deveria.... Não continua o case.... Enfim, tá fueda haha Segue o código.... Desde já, obrigada!

[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]

[HASHTAG]#define[/HASHTAG] MAX 3000

int main(){

char frase[MAX], criptografado[MAX];
int i, chave, opc, resp;
FILE *msgc, *msgd;
printf("\n\t*** Unip - Ciencia da Computacao ***");
printf("\n\n\t\t** APS Segundo Semestre **");
do{
printf("\n\n\n\tVoce deseja: ");
printf("\n\n\t1 - Criptografar uma mensagem");
printf("\n\n\t2 - Descriptografar uma mensagem\n\t");
scanf("%d", &opc);
system("cls");




switch(opc){

case 1:
printf("\n\n\t\t ***Criptografando*** ");
printf("\n\n\tDigite a frase a ser criptografada: ");
scanf("%s", &frase);


printf("\n\n\tDigite um numero para a chave: ");
scanf("%d",&chave);

msgc = fopen("msgc.txt", "w");//Início da criação do arquivo txt cripto
for(i=0;i criptografado=frase+chave;
fprintf(msgc,"%c",criptografado);
}
fclose(msgc);// Identifica o final do arquivo.
printf("\n\n\tFrase encriptada com sucesso!\n\n");
printf("\tPressione Enter para continuar!\n\n\n");
system("pause");
printf("\n\n");
break;

case 2:
if(msgc == NULL){
printf("\n\n\tVoce precisa primeiro criptografar uma mensagem!\n");
printf("\n\tTente novamente...\n\n");
system("pause");
exit(0);
}
printf("\n\n\t ***Descriptografando*** ");
msgc = fopen("msgc.txt", "r");//Início da leitura do arquivo txt
for(i=0;i fscanf(msgc, "%c", &criptografado);
criptografado=criptografado-chave;
}
fclose(msgc);// Identifica o final do arquivo.

msgd = fopen("msgd.txt", "w");//Início da criação do arquivo txt descripto
for(i=0;i fprintf(msgd, "%c", criptografado);
}
fclose(msgd);// Identifica o final do arquivo.
printf("\n\n\tFrase desencriptada com sucesso!\n\n");
system("pause");
printf("\n\n");
break;

default:
printf("Digite uma opcao valida!");
}
system("cls");

printf("Deseja continuar? (1 - sim / 2 - nao)\n");
scanf("%d",&resp);
if((resp!=1)&& (resp!=2))
printf("Programa finalizado, este numero nao existe no menu \n");
}while(resp==1);
system("pause");

return 0;
}
Eliseu F A Jr
Eliseu F A J... Geek Registrado
776 Mensagens 354 Curtidas
#2 Por Eliseu F A J...
16/11/2015 - 21:38
Experimente fazer assim:

[code=JavaScript]msgc = fopen("msgc.txt", "w");//Início da criação do arquivo txt cripto
for(i=0;i criptografado=frase+chave;
fprintf(msgc,"%c",criptografado);
}
fclose(msgc);// Identifica o final do arquivo.[/code]

Vai gravar o mesmo caractere strlen(frase) vezes. Não sei porque o char criptografado=frase+chave aceitou a soma sem ser int!?
Nathalia Pavan
Nathalia Pav... Novo Membro Registrado
2 Mensagens 0 Curtidas
#3 Por Nathalia Pav...
17/11/2015 - 00:01
Eliseu F A Jr disse:
Experimente fazer assim:

[code=JavaScript]msgc = fopen("msgc.txt", "w");//Início da criação do arquivo txt cripto
for(i=0;i criptografado=frase+chave;
fprintf(msgc,"%c",criptografado);
}
fclose(msgc);// Identifica o final do arquivo.[/code]

Vai gravar o mesmo caractere strlen(frase) vezes. Não sei porque o char criptografado=frase+chave aceitou a soma sem ser int!?

A parte da cripto e descripto deu certo sim haha loucura né? Mas enfim.... Não tenho mais tempo =/ Vou apresentar assim msm! Obrigada
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal