Autor
|
Tema: Ayuda sobre ordenacion en C# (Leído 4,425 veces)
|
F3RN1
Desconectado
Mensajes: 30
|
Hola, vereis estoy haciendo una práctica en la que me dan un fichero de texto en el que en cada linea hay una palabra en español;traduccion en ingles.Por ejemplo:
agua;water libro;book guapa;beautifl
Pues bien en la aplicacion al darle al boton abrir y seleccionar el fichero de texto que contiene esas lineas que os acabo de explicar, tiene que generar automaticamente dos ficheros llamados dicc.esp y dicc.ing. En dicc.esp tengo que introducir todas las palabras y su traduccion ordenadas por la palabra en español y con la siguiente sintaxis:
palabra español palabra ingles palabra español palabra ingles . . . etc
Por ejemplo para las lineas de arriba el fichero dicc.esp tendria que quedar:
agua water guapa beautiful libro book
Y para el fichero dicc.ing tendria qe hacer lo mismo pero ordenado por las palabras en ingles, quedaria:
beautiful guapa book libro water agua
Yo lo de generar los dos ficheros lo di hecho y leer una linea del fichero principal y cojer la palabra española y meterla en dicc.esp y cojer la palabra inglesa y meterla en dicc.ing tb lo se hacer, pero claro eso no es lo que me piden XD.
Como restriccion tengo que no puedo usar arrays asi que supongo que tendria que pasar las palabras a una lista y ordenarlas alli pero no se como.Aver si me podeis ayudar
Un ssaludo y gracias
|
|
|
En línea
|
|
|
|
Kpax
Desconectado
Mensajes: 316
|
Bueno ya hay clases que hacen eso, claro no lo que pides pero si respecto a los ordenamientos.
Revisa todo lo referente a los List y clases genericas
|
|
|
En línea
|
En este mundo una de dos
|
|
|
lordram
Desconectado
Mensajes: 9
|
He usado las palabras de ejemplo directametne en una cadena... simplemente sería leer el fichero y poner el texto en la variable contenidoFichero. using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ElHacker { class Program {
class Word { public string Castellano { get; set; } public string Ingles { get; set; } }
private string contenidoFichero = "agua;water\nlibro;book\nguapa;beautiful";
private List<Word> palabras = new List<Word>();
public Program() { ObtenerPalabras(); GenerarDiccionarioCastellanoIngles(); GenerarDiccionarioInglesCastellano(); }
private void ObtenerPalabras() { foreach (var linea in contenidoFichero.Split('\n')) palabras.Add(new Word { Castellano = linea.Split(';')[0], Ingles = linea.Split(';')[1] }); }
private void GenerarDiccionarioCastellanoIngles() { var solucion = from palabra in palabras orderby palabra.Castellano ascending select palabra; foreach (var palabra in solucion) Console.WriteLine(palabra.Castellano +" -> "+ palabra.Ingles); }
private void GenerarDiccionarioInglesCastellano() { var solucion = from palabra in palabras orderby palabra.Ingles ascending select palabra; foreach (var palabra in solucion) Console.WriteLine(palabra.Ingles + " -> " + palabra.Castellano); }
static void Main(string[] args) { new Program(); }
} }
|
|
|
En línea
|
|
|
|
Kpax
Desconectado
Mensajes: 316
|
La verdad solo seria guardar en un solo LIST ambos valores, el ordenamiento tienes que programarlo por medio de una funcion que te pide definir el LIST, en ese momento tu le puedes brndar los criterios (que ord. por ESP o ING).
Saludos y aver ocmo te fue
|
|
|
En línea
|
En este mundo una de dos
|
|
|
kargarof
Desconectado
Mensajes: 13
|
Yo leería la primera línea del fichero.
Lo metería en una variable string, averiguaría su longitud, localizaría en que posición está el ";" y separaría la cadena en 2 nuevas variables string y las introduciría en el nuevo archivo.
Limpiaría la primera cadena y volvería a leer, así hasta EOF.
Te evitas List y Arrays, es más engorroso pero posiblemente sea lo que se pretende con la práctica.
|
|
|
En línea
|
|
|
|
|
|