tfguitar 0 Denunciar post Postado Setembro 30, 2006 Estou fazendo um mini-tradutor ingles português, até a hora que ele recebe uma frase ou expressão e compara com a palavra está dando certo... mas na hora de mostrar a palavra traduzida não mostra, e não sei mais o que tentar.... Segue o uma parte código para analisarem valew.. #include<stdio.h>#include<conio.h>#include<string.h>int main(){ char Ln[256], *p, atomo[256], trad[256]; int i = 0, x = 1, j, c; for(c=0;c<256;c++) [b]//limpa os vetores[/b] { Ln[c] =0; atomo[c] =0; trad[c] =0; } while (!feof(stdin)) [b]//lê letra por lentra e forma uma string[/b] { printf("\nDigite uma palavra ou expressгo a ser traduzida: \n"); fgets(Ln,255,stdin); if(!feof(stdin)) { p=Ln; while(*p) { if(*p!=' ') { j=0; while(*p && *p!=' ' && p!=13 && p!=10) { atomo[j]=*p; j++; p++; atomo[j]= '\0'; if(strcmp(atomo,"i")==0) [b]//se for "palavra em ingles" [/b] strcat(trad,"eu "); [b]//concatena "palavra traduzida" no fim da frase de traducao[/b] else if(strcmp(atomo,"am")==0) strcat(trad,"estou "); else if(strcmp(atomo,"crazy")==0) strcat(trad,"maluco "); } p++; } } } } printf("\n\nTraducao: %s",*trad);[b] //aki era pra imprimir a frase traduzida....[/b]} Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Setembro 30, 2006 Eu só retirei este pedaço while (!feof(stdin)) [b]//lê letra por lentra e forma uma string[/b] {(e logicamente o fecha chaves lá embaixo) while(*p && *p!=' ' && p!=13 && p!=10)Eu não entendi a comparação p!=13 && p!=10 e retirei também.(Ela estava gerando um erro já que p é um ponteiro e está sendo comparado com um inteiro) Depois disso o programa funcionou perfeito para a entrada "i am crazy". Como ficou: #include<stdio.h>#include<string.h>int main(){ char Ln[256], *p, atomo[256], trad[256]; int i = 0, x = 1, j, c; for(c=0;c<256;c++) //limpa os vetores { Ln[c] =0; atomo[c] =0; trad[c] =0; } printf("\nDigite uma palavra ou expressao a ser traduzida: \n"); fgets(Ln,255,stdin); if(!feof(stdin)) { p=Ln; while(*p) { if(*p!=' ') { j=0; while(*p && *p!=' '/* && p!=13 && p!=10*/) { atomo[j]=*p; j++; p++; atomo[j]= '\0'; if(strcmp(atomo,"i")==0) //se for "palavra em ingles" strcat(trad,"eu "); //concatena "palavra traduzida" no fim da frase de traducao else if(strcmp(atomo,"am")==0) strcat(trad,"estou "); else if(strcmp(atomo,"crazy")==0) strcat(trad,"maluco "); } p++; } }} printf("\n\nTraducao: %s",trad);}No final aqui eu tirei o "*" de trad, já que você vai imprimir a string. Compartilhar este post Link para o post Compartilhar em outros sites
tfguitar 0 Denunciar post Postado Outubro 1, 2006 valew grande... funcionou perfeito....agora mais uma duvida pois eu me eskeci..... queria que se não tivesse uma palavra compatível, ele sairia do loop de comparações e mostrasse printf("Palavra indísponivel no tradutor: %s", atomo); mas como fazer um comando de parada.... seria o break ??????? valewwww Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Outubro 1, 2006 Sim, pode-se utilizar o break. Outra coisa seria colocar um indicador de que houve o erro antes de colocar o break, aí no final do programa você põe um if para imprimir a mensagem de erro ou simplesmente finalizar o programa. Compartilhar este post Link para o post Compartilhar em outros sites
tfguitar 0 Denunciar post Postado Outubro 2, 2006 skimo-solar, valew pela força... o brake não quis funcionar, mas isso num é tão importante.... outro problema que achei e não consigo resolver é no caso: else if(strcmp(atomo,"goal")==0) strcat(trad,"gol "); else if(strcmp(atomo,"go")==0) strcat(trad,"fui ");aew com o programa em execução se eu peço a tradução de go, ele me mostra fui, agora se eu peço a tradução de goal ele mostra a tradução fui goal.... você sabe como eu posso resolver isso ????? Compartilhar este post Link para o post Compartilhar em outros sites
skimo-solar 0 Denunciar post Postado Outubro 2, 2006 É... você vai ter alguns problemas já que as palavras podem ter mais de um significado.A solução é analisar o contexto, não palavras individualmente. Compartilhar este post Link para o post Compartilhar em outros sites