William Minerva Posted March 7, 2022 at 12:52 PM Share Posted March 7, 2022 at 12:52 PM (edited) Oi gente, bom dia, tudo bem? Eu preciso fazer um programa que leia uma frase e que em seguida cada letra do texto seja substituída por outra fazendo uma troca de 3 posições. Por exemplo: a letra A vira letra D, a letra B vira letra E e assim por diante. O problema é que o programa que eu construí ela lê apenas uma palavra mas não lê o resto que eu escrevo. Por exemplo: quando eu escrevo a palavra "CACHORRO CANSADO" o programa lê apenas a palavra "CACHORRO" e me retorna "FDFKRUUR" mas não lê a palavra "CANSADO", o programa considera apenas a primeira palavra que eu escrevo, por que isso está acontecendo? Como posso resolver esse problema? Eu escrevi o programa da seguinte forma: #include <stdio.h> #include <string.h> void cifrar( char * saida, const char * entrada, int chave ) { int i = 0; int tam = strlen(entrada); for( i = 0; i <= tam; i++ ) { if( (entrada[i] >= 'a') && (entrada[i] <= 'z') ) { saida[i] = (((entrada[i] - 'a') + chave) % 26) + 'a'; } else if( (entrada[i] >= 'A') && (entrada[i] <= 'Z') ) { saida[i] = (((entrada[i] - 'A') + chave) % 26) + 'A'; } else { saida[i] = entrada[i]; } } } void decifrar( char * saida, const char * entrada, int chave ) { int ch = 0; int i = 0; int tam = strlen(entrada); for( i = 0; i <= tam; i++ ) { if( (entrada[i] >= 'a') && (entrada[i] <= 'z') ) { ch = (entrada[i] - 'a') - chave; if( ch < 0 ) ch += 26; saida[i] = ch + 'a'; } else if( (entrada[i] >= 'A') && (entrada[i] <= 'Z') ) { ch = (entrada[i] - 'A') - chave; if( ch < 0 ) ch += 26; saida[i] = ch + 'A'; } else { saida[i] = entrada[i]; } } } int main( int argc, char * argv[] ) { char original[100]; scanf("%s", original); char cifrado[100]; cifrar( cifrado, original, 3 ); printf("%s", cifrado); return 0; Edited March 7, 2022 at 01:16 PM by William Minerva Quote Link to comment Share on other sites More sharing options...
William Minerva Posted March 7, 2022 at 01:17 PM Author Share Posted March 7, 2022 at 01:17 PM Descobri a solução para o problema, para remover a limitação do scanf() para leitura de espaços, basta apenas usar "scanf(" %[^\n]", s);" 1 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.