Ayuda sobre ordenacion en C#

Iniciado por F3RN1, 8 Abril 2008, 19:57 PM

0 Miembros y 1 Visitante están viendo este tema.

F3RN1

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

Kpax

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 este mundo una de dos

lordram

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();
        }

    }
}

Kpax

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 este mundo una de dos

kargarof

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.