none
Vectores(Ordenamiento) RRS feed

  • Pregunta

  • Buenas tardes,

    No entiendo la función del código en negrita.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace PruebaVector13
    {
        class PruebaVector13
        {
            private int[] sueldos;
    
            public void Cargar() 
            {
                sueldos=new int[5];
                for(int f=0;f < sueldos.Length;f++) 
                {
                    Console.Write("Ingrese el sueldo:");
                    string linea = Console.ReadLine();
                    sueldos[f]=int.Parse(linea);
                }
            }
    
            public void Ordenar()
            {
                for (int k = 0; k < 4; k++)
                {
                    for (int f = 0; f < 4 - k; f++)
                    {
                        if (sueldos[f] > sueldos[f + 1])
                        {
                            int aux;
                            aux = sueldos[f];
                            sueldos[f] = sueldos[f + 1];
                            sueldos[f + 1] = aux;
                        }
                    }
                }
            }
    
            public void Imprimir() 
            {
                Console.WriteLine("Sueldos ordenados de menor a mayor.");
                for(int f=0;f < sueldos.Length;f++) 
                {
                    Console.WriteLine(sueldos[f]);
                }
                Console.ReadKey();
            }
    
            static void Main(string[] args)
            {
                PruebaVector13 pv = new PruebaVector13();
                pv.Cargar();
                pv.Ordenar();
                pv.Imprimir();
            }
        }
    }
    

    Estoy siguiendo las indicaciones de http://www.csharpya.com.ar/index.php?inicio=0

    Si alguien pudiese recomendarme un buen manual (no me importa comprarlo) me vendría muy bien.

    Gracias, un saludo.

    martes, 11 de agosto de 2015 14:41

Respuestas

  • Hola, note que es el metodo de burbuja, asi que te sujiero esta mejor practica para ordenar los vectores:

     public void Ordenar()
            {
                for (int k = 0; k < 4; k++)//for es (<declarar el contador>; <condición>; < (como quieres que cambie el contador o el apuntador)>)
                {
                    for (int f = k+1; f < 4; f++)
                    {
                        if (sueldos[k] > sueldos[f])
                        {
                            int aux;
                            aux = sueldos[k];
                            sueldos[k] = sueldos[f];
                            sueldos[f] = aux;
                        }
                    }
                }
            }

    Y como una pagina de C# No. 1 te sugiero este foro y No. 2 http://www.csharpya.com.ar/index.php?inicio=60

    Saludos.




    • Propuesto como respuesta j0rgit0 martes, 11 de agosto de 2015 14:59
    • Marcado como respuesta Xponw3r martes, 11 de agosto de 2015 15:49
    • Editado j0rgit0 martes, 11 de agosto de 2015 17:03
    martes, 11 de agosto de 2015 14:58

Todas las respuestas

  • hola

    el codigo en negrita realiza un loop (iteracion) de cero a 3

    aunque veo algo raro usar la variable "k" como parte del for que define dentro

    -----

    si quieres ordenar un array o vector porque no evaluas usar  Array.Sort Method

    Sorting Arrays [C#]

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 11 de agosto de 2015 14:48
  • Buenas tardes,

    No entiendo la función del código en negrita.

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    namespace PruebaVector13
    {
        class PruebaVector13
        {
            private int[] sueldos;
    
            public void Cargar() 
            {
                sueldos=new int[5];
                for(int f=0;f < sueldos.Length;f++) 
                {
                    Console.Write("Ingrese el sueldo:");
                    string linea = Console.ReadLine();
                    sueldos[f]=int.Parse(linea);
                }
            }
    
            public void Ordenar()
            {
                for (int k = 0; k < 4; k++)
                {
                    for (int f = 0; f < 4 - k; f++)
                    {
                        if (sueldos[f] > sueldos[f + 1])
                        {
                            int aux;
                            aux = sueldos[f];
                            sueldos[f] = sueldos[f + 1];
                            sueldos[f + 1] = aux;
                        }
                    }
                }
            }
    
            public void Imprimir() 
            {
                Console.WriteLine("Sueldos ordenados de menor a mayor.");
                for(int f=0;f < sueldos.Length;f++) 
                {
                    Console.WriteLine(sueldos[f]);
                }
                Console.ReadKey();
            }
    
            static void Main(string[] args)
            {
                PruebaVector13 pv = new PruebaVector13();
                pv.Cargar();
                pv.Ordenar();
                pv.Imprimir();
            }
        }
    }

    Estoy siguiendo las indicaciones de http://www.csharpya.com.ar/index.php?inicio=0

    Si alguien pudiese recomendarme un buen manual (no me importa comprarlo) me vendría muy bien.

    Gracias, un saludo.

    Hola,

    Una disculpa olvide otra cosa, sobre que es lo que hace el código en negrita, esta iterando 5 veces, el hecho de recorrer completamente el arreglo en búsqueda de su ordenamiento.

    Saludos 

    martes, 11 de agosto de 2015 14:54
  • Hola, note que es el metodo de burbuja, asi que te sujiero esta mejor practica para ordenar los vectores:

     public void Ordenar()
            {
                for (int k = 0; k < 4; k++)//for es (<declarar el contador>; <condición>; < (como quieres que cambie el contador o el apuntador)>)
                {
                    for (int f = k+1; f < 4; f++)
                    {
                        if (sueldos[k] > sueldos[f])
                        {
                            int aux;
                            aux = sueldos[k];
                            sueldos[k] = sueldos[f];
                            sueldos[f] = aux;
                        }
                    }
                }
            }

    Y como una pagina de C# No. 1 te sugiero este foro y No. 2 http://www.csharpya.com.ar/index.php?inicio=60

    Saludos.




    • Propuesto como respuesta j0rgit0 martes, 11 de agosto de 2015 14:59
    • Marcado como respuesta Xponw3r martes, 11 de agosto de 2015 15:49
    • Editado j0rgit0 martes, 11 de agosto de 2015 17:03
    martes, 11 de agosto de 2015 14:58
  • Podrías recomendarme un mejor manual?

    Muchas gracias.

    EDITO: Solo me había fijado en tu código y no había visto el enlace.

    Preguntaba si había otro manual porque cogí el primero que vi, la verdad. Entonces no sabía si este utiliza buen código o habría alguno mejor. Con buen código, me refiero a que esté "bonito" y bien estructurado, por decirlo de alguna manera (Ya se que son totalmente funcionales).



    • Editado Xponw3r martes, 11 de agosto de 2015 15:27
    martes, 11 de agosto de 2015 15:18
  • el 2do link te va a ayudar, no olvides marcar como respuesta y como útil si te sirvió de algo lo que te puse.

    No olvides practicar y googlear, porque no todo esta hecho como la rueda, sino que tendrás que crear eso lo hermoso de codificar.

    Saludos.

    martes, 11 de agosto de 2015 15:34