Ir ao conteúdo
  • Cadastre-se

Ajuda Tradutor Portugues-> Ingles [+ Manipiulação de arquivos]


babylon

Posts recomendados

aí galera beleza, seguinte estou com um trabalho de faculdade e queria ajuda de vocês, tipo na verdade eu sei mais Flash e PHP e em C++ so sei o basico de progamação e não sei nada de arquivos TXT queria saber de vocês ate uma ajuda quanto a este trabalho de faculdade que me foi passado:

"Você deverá construir um tradutor que deverá fazer uso também dos TADs implementado para traduzir um texto. Para isso, o sistema deverá receber um arquivo texto e traduzir palavra a palavra o texto de português para inglês ou de inglês para português. A mesma saída deverá ser impressa na tela e em um arquivo de saída. Quando a palavra lida não existir no dicionário o tradutor deverá manter a palavra original.

Você pode assumir que as palavras no arquivo de entrada e no dicionário não estarão acentuadas.

Por exemplo, suponha o dicionário:

aniversario - birthday

bolo – cake

de – of

e – is

eu – I

festa – party

gosto – like

hoje – today

meu - my

presente – gift

Neste caso, se o usuário entrar um arquivo contendo:

Hoje e meu aniversario. Eu adoro bolo.

O sistema vai gerar a saída:

Today is my birthday. I adoro cake.

O usuário pode então interagir com o sistema para entrar uma nova palavra e acrescentar

adoro – love no dicionário. Fazendo a tradução do mesmo arquivo, então se obteria:

Today is my birthday. I love cake.

Formato Exemplo:

<palavra português 1> <palavra inglês 1>

<palavra português 2> <palavra inglês 2>

<palavra português 3> <palavra inglês 3>

...

<palavra português n> <palavra inglês n>

Observe que o arquivo contendo o dicionário deve ser carregado automaticamente a partir de um dicionário no mesmo diretório do programa principal de nome dicionario.txt. O dicionário deverá conter apenas palavras simples, sem acento e sem hífen. Palavras compostas ou expressões não precisam ser consideradas.

Para o desenvolvimento do trabalho, deverão ser implementadas 3 (três) TAD (Tipos Abstratos de Dados):

• Palavra: este TAD deve representar uma palavra em uma língua específica (inglês ou português). Uma palavra é definida como um conjunto de até M caracteres do alfabeto (a-z, A-Z).

• Verbete: este TAD representa um par de palavras, uma em português e a sua tradução em inglês.

• Dicionário: este TAD contém um conjunto de verbetes.

Algumas das funções que você deverá implementar no TAD Verbete são:

• void inicializaVerbete(Verbete *v, Palavra p1, Palavra p2) Inicializa o Verbete v com as palavras p1 e p2, garantindo que elas estejam em línguas

diferentes, uma em PORTUGUES, outra em inglês.

• Palavra obtemTraducao(Verbete v, Palavra p)

Dada a palavra p contida no verbete v, retorne a sua tradução.

• Palavra retornaPort(Verbete v)

Dado um verbete v, retorna a tradução em português.

• Palavra retornaIng(Verbete v)

Dado um verbete v, retorna a tradução em inglês.

Algumas das funções que você deverá implementar no TAD Dicionário são:

• void InicializaDicionario(Dicionario *dic)

Inicializa o dicionário dic como vazio.

• int CarregaDic(char *NomeArq, Dicionario *dic);

Dado um string contendo o nome de um arquivo, abre o arquivo e carrega o dicionário em dic. Retorna 1, caso tenha conseguido carregar corretamente o dicionário e 0 se não conseguir.

• int InsereDic(Dicionario *dic, Verbete v);

Dado um dicionário dic e um Verbete v, acrescenta-a no dicionário. Retorna 1, caso tenha conseguido acrescentá-la (caiba no dicionário) e 0 se não conseguir.

• void RetiraDic(Dicionario *dic, Palavra *p);

Dado um dicionário dic e uma palavra p, retira o VERBETE que contenha p do dicionario dic. Retorna 1, caso tenha conseguido retirá-la e 0 se não conseguir (e.x. não a encontrar).

• int retornaTraducaoPort(Palavra p, Palavra *p2);

Dada uma palavra em inglês p, retorna 1, caso tenha conseguido traduzi-la para português, inserindo em p2 a sua tradução. Retorna 0 se não conseguir (e.x. não a encontrar).

• int retornaTraducaoIng(Palavra p, Palavra *p2);

Dada uma palavra em português p, retorna 1, caso tenha conseguido traduzi-la para inglês inserindo em p2 a sua tradução. Retorna 0 se não conseguir (e.x. não a encontrar)."

----------------------------

Agora o que eu já fiz com ajuda de um colega e de pessoas um codigo que traduz as palavras por String, mais eu precisava mesmo como pede no trabalho é para fazer por manipulação de arquivos .TXT sendo que o TXT seria o banco de dados:

#include<stdio.h>
#include<string.h>
#include <conio.h>

int main()
{
char Ln[256], *p, atomo[256], trad[256];
int i = 0, x = 1, j, c;

for(c=0;c<256;c++)
{
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!=' ')
{
atomo[j]=*p;
j++;
p++;

atomo[j]= '';
if(strcmp(atomo,"i")==0)
strcat(trad,"eu ");
else if(strcmp(atomo,"am")==0)
strcat(trad,"estou ");
else if(strcmp(atomo,"gift")==0)
strcat(trad,"presente ");
else if(strcmp(atomo,"party")==0)
strcat(trad,"festa ");
else if(strcmp(atomo,"crazy")==0)
strcat(trad,"maluco ");
}
p++;
}
}
}

printf("\n\nTraducao: %s",trad);
getch();
}

Problema é que traduz a frase por palavras mais sem manipulação de arquivos pelo que um colega meu ajudou, ai terei que refazer o codigo para manipular arquivos .TXT tambêm e esta é minha duvida.

Mais tipo eu teria que entender adicionar arquivos .TXT em C, a ideia minha seria trabalhar então com um banco de dados adicionados a um arquivo .TXT onde la abrindo o .TXT sem precisar ir ao programa (no programa no caso você so conferia so escolhia um idioma e digitava a palavra e la viria o significado) você teria as palavras em inglês e portugues alem de poder adicionar varias outras palavras, seria algo assim no .TXT:

txt.jpg

"No caso as palavras ingês e portugues seriam traduzidas pela sequencia, tipo a 1a palavra em inglês seria traduzida na 1a em portugues."

Eu achei um codigo para escrever no TXT:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc, char *argv[])
{
FILE *fp;
double ld;
int d;
char str[80];

if(argc!=2) {
printf("Specify file name.\n");
exit(1);
}

/* open file for output */
if((fp = fopen(argv[1], "w"))==NULL) {
printf("Cannot open file.\n");
exit(1);
}

fprintf(fp, "%f %d %s", 345.342, 908, "hiiiiiiii");
fclose(fp);

/* open file for input */
if((fp = fopen(argv[1], "r"))==NULL) {
printf("Cannot open file.\n");
exit(1);
}

fscanf(fp, "%lf%d%s", &ld, &d, str);
printf("%f %d %s", ld, d, str);
fclose(fp);

return 0;
}

Mais eu queria no caso implementar o codigo já feito mais acima por string e como não sei muito de manipulação de arquivos .TXT queria ajuda de vocês, bom se alguém puder me ajudar a refazer o codigo para chamar um .TXT por manipulação de arquivos.

Desde já valeu e falou!!!

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

Já que foi feita referência sobre o TAD Texto, quais seriam os métodos definidos previamente(Inserção, remoção, pesquisa...)? Outra coisa é se você sabe trabalhar com estrutura autoreferenciada tal como listas encadeadas ou árvores ou ainda com Hash table. Caso saiba trabalhar com Hash table, creio eu que seja a melhor pedida para estruturar seu TAD, visto que a complexidade para a operação de pesquisa é constante. Abraços.

Link para o comentário
Compartilhar em outros sites

Já que foi feita referência sobre o TAD Texto, quais seriam os métodos definidos previamente(Inserção, remoção, pesquisa...)? Outra coisa é se você sabe trabalhar com estrutura autoreferenciada tal como listas encadeadas ou árvores ou ainda com Hash table. Caso saiba trabalhar com Hash table, creio eu que seja a melhor pedida para estruturar seu TAD, visto que a complexidade para a operação de pesquisa é constante. Abraços.

Opa Plateu beleza?

Seguinte o codigo que eu tinha feito junto com ajuda de um colega meu era este aqui:

#include<stdio.h>
#include<string.h>
#include <conio.h>

int main()
{
char Ln[256], *p, atomo[256], trad[256];
int i = 0, x = 1, j, c;

for(c=0;c<256;c++)
{
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!=' ')
{
atomo[j]=*p;
j++;
p++;

atomo[j]= '';
if(strcmp(atomo,"i")==0)
strcat(trad,"eu ");
else if(strcmp(atomo,"am")==0)
strcat(trad,"estou ");
else if(strcmp(atomo,"gift")==0)
strcat(trad,"presente ");
else if(strcmp(atomo,"party")==0)
strcat(trad,"festa ");
else if(strcmp(atomo,"crazy")==0)
strcat(trad,"maluco ");
}
p++;
}
}
}

printf("\n\nTraducao: %s",trad);
getch();
}

O problema é que (tanto ele que saca mais que eu, quanto eu) não sabemos de manipulação de arquivos .TXT em C e o professor não aceitou depois de ele por ter sido todo feito em manipulação de strings, ate por isto postei o topico aqui para ver se alguem poderia ajudar a converter ou mesmo ajudar na manipulação de arquivos .TXT como banco de dados. Bom o que eu estava pensando era adotar um unico .TXT que la teria assim:

[palavra em portugues] [palavra em inglês]

oi hi

ola hello

Ou uma outra ideia para aproveitar o codigo ja feito era fazer com que cada palavra utiliza-se um unico .TXT nesta ideia eu faria o mesmo esquema de comparação que foi feito por strings no codigo acima com diferença que a cada palavra digitada fosse traduzida abrindo um .TXT, exemplo:

if(strcmp(atomo,"i")==0)
strcat(trad,"eu.txt ");
if(strcmp(atomo,"am")==0)
strcat(trad,"estou.txt ");

"Se estiver errado a sintaxe desculpe porque eu não sei mesmo como seria as sintaxes de manipulação de arquivos .TXT"

Bom o que vocês acham, alguem poderia começar e ou mesmo me ajudar ja que o trabalho meu esta quase pronto, na verdade estaria pronto se o professor não tivesse aceitado pelo fato de não estar manipulando nenhum arquivo.

Bom é isto valeu e Falou!!!

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Curso de Hacker Ético

LANÇAMENTO!

CLIQUE AQUI E CONFIRA!

* Este curso não é ministrado pela equipe do Clube do Hardware.