Benfeitor 0 Denunciar post Postado Maio 15, 2008 Galera, Estou tendo um problema neste tipo de criptografia, o programa compila cria o arquivo mais infelizmente não está criptografando o contúdo do arquivo. Será que alguem poderia me dar uma dica de como faço para resolver esse probleminha? Eis o código: program criptoJC; var nome1, nome2: string; arq1, arq2: text; i: char; begin writeln; write ('Nome do arquivo a ser lido: '); readln (nome1); write ('Nome do arquivo a ser criado: '); readln (nome2); assign(arq1, nome1); assign(arq2, nome2); reset (arq1); rewrite (arq2); while not eof(arq1) do begin read(arq1,i); write(arq2,chr(ord(i)+3)); end; readkey; end. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Maio 15, 2008 Movido: Lógica de Programação e Algoritmos http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Outras Linguagens de Programação oq aparece pois ORD() é a função para pegar o valor ascii da letra digitada! no pascal qnd você declara um tipo char ele armazena soh 1 caracter neh? []'s Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 21, 2008 write(arq2,chr(ord(i)+3)); Suponho que você só queira símbolos mesmo,nada de tabulações ou \n no arquivo... O que acontece quando você tem um ORD©=124? O programa vai escrever algo e nos casos de 125,126 e 127, o símbolo é indefinido. você tem usar o operador % p/ mapear esses três ultimos casos para os três primeiros símbolos do alfabeto. Veja esse exemplo em C: #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char *s=NULL; size_t n; int i; getline(&s,&n,stdin); n = strlen(s)-1; s[n] = '\0'; for(i=0;i<n;i++) s[i] = (char)((i+3)%128); printf("\nNova mensagem:%s",s); free(s); } Compartilhar este post Link para o post Compartilhar em outros sites