Alexandre Gr...
Cyber Highlander
Registrado
26.9K Mensagens
3.7K Curtidas
tpcvasco
General de Pijama
Registrado
2.9K Mensagens
330 Curtidas
Vc tá comentendo alguns erros, normal, típico de iniciante.
Erros para acertar o código:
-Inicialize "cont" com o valor 0.
-Coloque '\0' no final de "decodificada", no final da função.
-Sua função deve retornar um "char *", não apenas "char"
Melhorias:
-Pq vc tem dois if, um para !='p' e outro para =='p', se nos dois vc faz exatamente a mesma coisa?
-Pq vc faz vários printf e grava tb na string decodificada? Não seria mais fácil vc ter um único printf no final da função? printf("%s\n", decodificada);
-Use não somente "if", mas "else if" tb.
Yasmin Trind...
Novo Membro
Registrado
14 Mensagens
1 Curtida
Não é possível concatenar um char numa string. Por isso, tentei fazer desse jeito, mas não está dando certo. Poderia ajudar-me novamente?
Obg.
[code=C]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
char* decodificar(char *codificada)
{
char decodificada[1001];
char msg[1];
strcpy(decodificada," ");
for(int a=0;codificada[a]!='\0';a++)
{
if((codificada[a]=='p')&&(codificada[a+1]!='p'))
{
msg[0]=codificada[a+1];
strcat(decodificada, msg);
a++;
}
if((codificada[a]=='p')&&(codificada[a+1]=='p'))
{
msg[0]=codificada[a+1];
strcat(decodificada, msg);
a++;
}
if(codificada[a]==' ')
{
msg[0]=codificada[a];
strcat(decodificada, msg);
}
}
return(decodificada);
}
main()
{
char mensagem[1010], codif[1001];
printf("Insira a mensagem codificada:\t");
gets(codif);
strcpy(mensagem, decodificar(codif));
gotoxy(10,8);printf("%s", mensagem);
}[/code]
Yasmin Trind...
Novo Membro
Registrado
14 Mensagens
1 Curtida
O seguinte programa deve ler uma frase codificada em língua do p (filme legal = pfpiplpmpe plpepgpapl) e decodificá-lo. Deve-se retornar uma string com a mensagem decodificada.
Não está dando certo. Poderiam me ajudar?
Obg.
[code=C]
#include
#include
#include
char* decodificar(char *codificada)
{
char decodificada[1001];
char msg[1];
strcpy(decodificada," ");
for(int a=0;codificada[a]!='\0';a++)
{
if((codificada[a]=='p')&&(codificada[a+1]!='p'))
{
msg[0]=codificada[a+1];
strcat(decodificada, msg);
a++;
}
if((codificada[a]=='p')&&(codificada[a+1]=='p'))
{
msg[0]=codificada[a+1];
strcat(decodificada, msg);
a++;
}
if(codificada[a]==' ')
{
msg[0]=codificada[a];
strcat(decodificada, msg);
}
}
return(decodificada);
}
main()
{
char mensagem[1010], codif[1001];
printf("Insira a mensagem codificada:\t");
gets(codif);
strcpy(mensagem, decodificar(codif));
gotoxy(10,8);printf("%s", mensagem);
}[/code]
Alexandre Gr...
Cyber Highlander
Registrado
26.9K Mensagens
3.7K Curtidas
Otneba62
Cyber Highlander
Registrado
16.6K Mensagens
2K Curtidas
tpcvasco
General de Pijama
Registrado
2.9K Mensagens
330 Curtidas
Não é possível concatenar um char numa string.
É possível sim, basta usar sprintf(). Mas no seu caso nem precisa...
Vc não vez nada do q eu disse no meu outro post e modificou bastante o código (a meu ver, modificou para pior)...
Olha como um código pode ser bem mais enxuto
[code=c]
for(int a=0;codificada[a]!='\0';a++) {
if(codificada[a]=='p') {
decodificada[cont]=codificada[a+1];
a++;
cont++;
}
else if(codificada[a]==' ') {
decodificada[cont]=codificada[a];
cont++;
}
}
decodificada[cont]='\0';
[/code]