Logo Hardware.com.br
Yasmin Trindade
Yasmin Trind... Novo Membro Registrado
14 Mensagens 1 Curtida

Programa em linguagem C++

#1 Por Yasmin Trind... 12/11/2014 - 22:06
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 ou enviar uma string por referência e alterá-la na função.
Não está dando certo. Poderiam me ajudar?
Obg.

[CODE=C++]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]
[HASHTAG]#include[/HASHTAG]

char decodificar()
{
char codificada[1001], decodificada[1001];
int cont;
printf("Insira a mensagem codificada:\t");
gets(codificada);
for(int a=0;codificada[a]!='\0';a++)
{
if((codificada[a]=='p')&&(codificada[a+1]!='p'))
{
printf("%c",codificada[a+1]);
decodificada[cont]=codificada[a+1];
a++;
cont++;
}
if((codificada[a]=='p')&&(codificada[a+1]=='p'))
{
printf("%c",codificada[a+1]);
decodificada[cont]=codificada[a+1];
a++;
cont++;
}
if(codificada[a]==' ')
{
printf(" ");
decodificada[cont]=codificada[a];
cont++;
}

}
return decodificada;
}

main()
{
decodificar();

}
[/code]
tpcvasco
tpcvasco General de Pijama Registrado
2.9K Mensagens 330 Curtidas
#3 Por tpcvasco
13/11/2014 - 12:41
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 Trindade
Yasmin Trind... Novo Membro Registrado
14 Mensagens 1 Curtida
#4 Por Yasmin Trind...
14/11/2014 - 21:58
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 Trindade
Yasmin Trind... Novo Membro Registrado
14 Mensagens 1 Curtida
#5 Por Yasmin Trind...
14/11/2014 - 22:01
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]
tpcvasco
tpcvasco General de Pijama Registrado
2.9K Mensagens 330 Curtidas
#8 Por tpcvasco
17/11/2014 - 08:51
Yasmin Trindade disse:
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]
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal