Aew 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 INGLES.
• 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:
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 progama (no progama no caso você so conferia so escolhia um idioma e digitava a palavra e la viria o significado) você teria as palavras em ingles e portugues alem de poder adicionar varias outras palavras, seria algo assim no .TXT:
"No caso as palavras ingês e portugues seriam traduzidas pela sequencia, tipo a 1a palavra em ingles seria traduzida na 1a em portugues."
Eu achei um codigo para escrever no TXT:
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.
Pergunta
babylon
Aew 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 INGLES.
• 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 progama (no progama no caso você so conferia so escolhia um idioma e digitava a palavra e la viria o significado) você teria as palavras em ingles e portugues alem de poder adicionar varias outras palavras, seria algo assim 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á vlw e falou!!!
Link para o comentário
Compartilhar em outros sites
6 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.