Skip to content

Commit b626c75

Browse files
committed
Commit inicial y final
Y eso
1 parent b825bdf commit b626c75

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

64 files changed

+2941
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
eclipse.preferences.version=1
2+
encoding//src/DiccA.java=UTF-8

.settings/org.eclipse.jdt.core.prefs

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
eclipse.preferences.version=1
2+
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3+
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
4+
org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
5+
org.eclipse.jdt.core.compiler.compliance=1.8
6+
org.eclipse.jdt.core.compiler.debug.lineNumber=generate
7+
org.eclipse.jdt.core.compiler.debug.localVariable=generate
8+
org.eclipse.jdt.core.compiler.debug.sourceFile=generate
9+
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
10+
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
11+
org.eclipse.jdt.core.compiler.source=1.8

DiccA old.java

+328
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,328 @@
1+
//DNI 48727303D PALAU ALEGRIA, JOSE MANUEL
2+
3+
import java.io.*;
4+
public class DiccA {
5+
private char[] lenguas;
6+
private Palabra[] dicc;
7+
private Palabra[] diccord; //almacena diccionario ordenado por origen
8+
private int last, nlenguas; //ultima posicion libre
9+
//constructor por defecto
10+
public DiccA(){
11+
dicc = new Palabra[10];
12+
diccord = new Palabra[10];
13+
nlenguas = -1;
14+
}
15+
//lee diccA leera el texto en el fichero que le pasaremos en f
16+
public void leeDiccA(String f){
17+
18+
FileReader fichero = null ;
19+
BufferedReader lectura = null ;
20+
try {
21+
// esto podria ir al metodo abre
22+
fichero = new FileReader (f);
23+
lectura = new BufferedReader ( fichero );
24+
//leo linea a linea
25+
String linea = lectura.readLine ();
26+
// bucle lectura hasta final de fichero
27+
int i = 0;
28+
while ( linea != null ) {
29+
this.procesaLinea(linea, i);
30+
linea = lectura.readLine(); // procesar linea
31+
i++;
32+
33+
}
34+
} catch ( IOException e ){
35+
System.err.println(" Error con archivo");
36+
System.exit(0);
37+
}
38+
// esto podria ir al metodo cerrar
39+
try {
40+
if ( fichero!=null)
41+
fichero.close();
42+
if ( lectura != null )
43+
lectura . close ();
44+
} catch (IOException ex){
45+
System.out.println(ex);
46+
}
47+
}
48+
public void procesaLinea(String linea, int numLinea) {
49+
50+
//si la linea que me llega es 0, entonces es el numero de idiomas
51+
if(numLinea==0){
52+
nlenguas= Integer.parseInt(linea);
53+
lenguas = new char[nlenguas];
54+
}
55+
//si la linea que me llega es 1, son los idiomas de las palabras
56+
if(numLinea==1){
57+
//defino separador " "
58+
String separador= " ";
59+
//separo la linea con el separador, para tener un array de idiomas s
60+
String [] s = linea.split( separador ) ;
61+
for(int i=0; i<nlenguas;i++){
62+
//y meto los idiomas en lenguas
63+
lenguas[i]= s[i].charAt(0);
64+
}
65+
}
66+
//el resto de lineas seran palabras
67+
if(numLinea>1){
68+
//defino separadores
69+
String separador1= "[ ]*\\*[ ]*";
70+
String separador2= "/";
71+
72+
String[] s = linea.split(separador1);
73+
String[] acep;
74+
Palabra p=new Palabra(s[0], nlenguas);
75+
p.setLenguas(lenguas);
76+
for(int i=0;i<s.length-1;i++){
77+
78+
acep = s[i+1].split(separador2);
79+
for(int j=0; j<acep.length;j++){
80+
if (acep[j]!=null)
81+
p.agregaAcepcion(acep[j], lenguas[i]);
82+
}
83+
}
84+
insertaPalabra(p);
85+
}
86+
87+
}
88+
public boolean insertaPalabra(Palabra p){
89+
boolean ret = true, hueco = false, encontrado = false;
90+
if(last < dicc.length){
91+
hueco = true;
92+
}
93+
else{
94+
//hago dos diccionarios auxiliares
95+
Palabra[] diccaux = dicc;
96+
Palabra[] diccordaux = diccord;
97+
//amplio memoria, pero se borran los diccionarios
98+
dicc = new Palabra[dicc.length+10];
99+
diccord = new Palabra[dicc.length+10];
100+
//copio todos los archivos de diccaux a dicc
101+
for(int i = 0; i<diccaux.length; i++){
102+
dicc[i] = diccaux[i];
103+
diccord[i] = diccordaux[i];
104+
}
105+
hueco = true;
106+
107+
}
108+
if(hueco == true){
109+
//meto la palabra en dicc
110+
for(int i=0; i<last ; i++){
111+
if(dicc[i].comparaPalabra(p)==0){
112+
dicc[i].setLenguas(lenguas);
113+
ret = dicc[i].combinaPalabra(p);
114+
encontrado = true;
115+
break;
116+
}
117+
}
118+
119+
if(encontrado == true){
120+
//meto la palabra en diccord
121+
for(int i=0; i<last ; i++){
122+
if(diccord[i].comparaPalabra(p)==0){
123+
if(diccord[i].combinaPalabra(p)){
124+
ret = true;
125+
};
126+
break;
127+
}
128+
129+
}
130+
}
131+
if(encontrado == false){
132+
//si no lo encuentro, meto la palabra al final de dicc y diccord y mando a diccord a que se ordene
133+
dicc[last] = p;
134+
diccord[last] = p;
135+
ordenaDiccord();
136+
last++;
137+
}
138+
}
139+
return ret;
140+
}
141+
142+
private void ordenaDiccord() {//ordeno usando el algoritmo de burbuja
143+
144+
//vamos a sacar primero el n�mero de palabras que hay en el diccionario.
145+
int i=0;
146+
Palabra aux;
147+
while (i<diccord.length){
148+
if(diccord[i]==null){
149+
break;//si encontramos la �ltima palabra insertada salimos del bucle
150+
}
151+
i++;
152+
}
153+
for (int j=0;j<i;j++){
154+
for (int k=0; k<i-1;k++){
155+
if(diccord[j].getOrigen().compareToIgnoreCase(diccord[k].getOrigen())<0){
156+
aux=diccord[j];
157+
diccord[j]=diccord[k];
158+
diccord[k]=aux;
159+
}
160+
}
161+
}
162+
}
163+
164+
public boolean borraPalabra(String s){
165+
boolean encontredicc=false;
166+
boolean encontrediccord=false;
167+
for(int i=0;i<last;i++){
168+
if (encontredicc == false && s.equalsIgnoreCase(dicc[i].getOrigen())){
169+
dicc[i]=null;
170+
dicc[i] = dicc[i+1];
171+
for (int j = i; j<dicc.length -1; j++){
172+
dicc[j] = dicc[j+1];
173+
}
174+
encontredicc=true;
175+
}
176+
if (encontrediccord ==false && s.equalsIgnoreCase(diccord[i].getOrigen())){
177+
diccord[i]=null;
178+
for (int j = i; j<diccord.length-1 ; j++){
179+
diccord[j] = diccord[j+1];
180+
if(diccord[j]==null){
181+
break;
182+
}
183+
184+
}
185+
encontrediccord=true;
186+
last--;
187+
}
188+
}
189+
190+
return encontrediccord;
191+
}
192+
public int busqueda(String s){
193+
for(int i=0;i<last;i++){
194+
if (s.equalsIgnoreCase(dicc[i].getOrigen())){
195+
return i;
196+
}
197+
}
198+
199+
return -1;
200+
}
201+
public int busquedaOptima(String s){
202+
//este método busca la cadena s en el diccionario y devuelve las comparaciones que tuvo que hacer (pero óptimamente)
203+
//para este caso implementaré una búsqueda binaria, consistente en dividir el array en dos para averiguar en que zona está del array
204+
205+
int centro, max=last-1, min=0, i=0;
206+
//centro será el centro de donde estoy buscando
207+
//max es el rango máximo que estoy buscando
208+
//min es el rango mínimo
209+
//i es el número de iteracciones que realiza el programa
210+
while (min<=max){
211+
i++;
212+
centro=(max+min)/2;
213+
if (diccord[centro].getOrigen().compareToIgnoreCase(s)==0){ //si me devuelve 0, las palabras son las mismas, y no tengo que buscar más
214+
return i;
215+
}
216+
else{
217+
if(diccord[centro].getOrigen().compareToIgnoreCase(s)>0){//se devuelve un número mayor que uno, el objeto del diccionario es mayor que el que me pasan
218+
max=centro-1; //y por tanto, no estará más arriba que en el centro.
219+
}
220+
else{ //si devuelve un número menor que uno, la palabra buscada no estará más abajo del centro
221+
min=centro+1; // y por tanto el mínimo pasará a ser el centro
222+
}
223+
}
224+
}
225+
return -1;
226+
227+
}
228+
229+
public String traduce1(String s, char l){
230+
String traduc = null;
231+
for (int i = 0; i<last; i++){
232+
if(s.equalsIgnoreCase(dicc[i].getOrigen())){
233+
traduc = dicc[i].getTraduccion(l);
234+
}
235+
}
236+
return traduc;
237+
}
238+
public String traduce2(String s, char l){
239+
//busca en el diccionario la palabra s y devuelve todas las traducciones
240+
//primero buscaré la palabra con el código de búsqueda óptima
241+
int centro, max=last-1, min=0;
242+
//centro será el centro de donde estoy buscando
243+
//max es el rango máximo que estoy buscando
244+
//min es el rango mínimo
245+
//i es el número de iteracciones que realiza el programa
246+
while (min<=max){
247+
centro=(max+min)/2;
248+
if (diccord[centro].getOrigen().compareToIgnoreCase(s)==0){ //si me devuelve 0, las palabras son las mismas, y no tengo que buscar más
249+
return diccord[centro].getTraducciones(l); //devuelvo todas las traducciones de la palabra
250+
}
251+
else{
252+
if(diccord[centro].getOrigen().compareToIgnoreCase(s)>0){//se devuelve un número mayor que uno, el objeto del diccionario es mayor que el que me pasan
253+
max=centro-1; //y por tanto, no estará más arriba que en el centro.
254+
}
255+
else{ //si devuelve un número menor que uno, la palabra buscada no estará más abajo del centro
256+
min=centro+1; // y por tanto el mínimo pasará a ser el centro
257+
}
258+
}
259+
}
260+
261+
return null;
262+
263+
}
264+
public void muestraDiccA(int i){
265+
if ( i== 0){
266+
for (int j= 0 ; j<last ; j++){
267+
dicc[j].escribeInfo();
268+
}
269+
}
270+
if ( i== 1){
271+
for (int j= 0 ; j<last ; j++){
272+
if(diccord[j]!=null){
273+
diccord[j].escribeInfo();
274+
}
275+
}
276+
}
277+
278+
}
279+
280+
public void muestraDiccA(int i, int j){
281+
if ( i== 0){
282+
for (int l= 0 ; l<last && l<j ; l++){
283+
dicc[l].escribeInfo();
284+
}
285+
}
286+
if ( i== 1){
287+
for (int l= 0 ; l<last && l<j ; l++){
288+
if(diccord[l]!=null){
289+
diccord[l].escribeInfo();
290+
}
291+
}
292+
}
293+
294+
}
295+
296+
public void muestraDiccA(int i, int j, char l){
297+
if ( i== 0){
298+
for (int k= 0 ; k<last && k<j ; k++){
299+
System.out.print(dicc[k].getOrigen()+":");
300+
if(dicc[k].getTraducciones(l)!=null){
301+
System.out.println(dicc[k].getTraduccion(l));
302+
}
303+
else{
304+
System.out.println();
305+
}
306+
}
307+
}
308+
if ( i== 1){
309+
for (int k= 0 ; k<last && k<j ; k++){
310+
if(diccord[k]!=null){
311+
System.out.print(diccord[k].getOrigen()+":");
312+
if(diccord[k].getTraducciones(l)!=null){
313+
System.out.println(diccord[k].getTraduccion(l));
314+
}
315+
else{
316+
System.out.println();
317+
}
318+
319+
}
320+
}
321+
}
322+
323+
}
324+
public char[] devuelveLengua() {
325+
return lenguas;
326+
}
327+
328+
}

Pruebas/p01.dic

Whitespace-only changes.

Pruebas/p01.java

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/**
2+
* @author Alicia Garrido Alenda
3+
*
4+
* Se crea un objeto de tipo Palabra pasando un numero no valido por
5+
* parametro al constructor. Se agregan acepciones para mas idiomas
6+
* de los posibles. Se invoca su metodo escribeInfo.
7+
*/
8+
public class p01 {
9+
public static void main(String[] args){
10+
String lexeme=new String("workplace");
11+
Palabra word=new Palabra(lexeme,0);
12+
String[] meaning=new String[4];
13+
char[] language=new char[4];
14+
meaning[0]=new String("lugar de trabajo");
15+
language[0]='E';
16+
meaning[1]=new String("lieu de travail");
17+
language[1]='F';
18+
meaning[2]=new String("local de trabalho");
19+
language[2]='P';
20+
meaning[3]=new String("sul posto di lavoro");
21+
language[3]='I';
22+
boolean flag=false;
23+
for(int i=0;i<language.length;i++){
24+
flag=word.agregaAcepcion(meaning[i],language[i]);
25+
System.out.println("traduccion a "+language[i]+"; acepcion "+meaning[i]+" -> "+flag);
26+
}
27+
word.escribeInfo();
28+
}
29+
}

Pruebas/p01.txt

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
traduccion a E; acepcion lugar de trabajo -> true
2+
traduccion a F; acepcion lieu de travail -> true
3+
traduccion a P; acepcion local de trabalho -> true
4+
traduccion a I; acepcion sul posto di lavoro -> false
5+
workplace:lugar de trabajo:lieu de travail:local de trabalho

Pruebas/p02.dic

Whitespace-only changes.

0 commit comments

Comments
 (0)