Foro de elhacker.net

Programación => Ejercicios => Mensaje iniciado por: erest0r en 7 Junio 2014, 22:24 pm



Título: Compartiendo un ejercicio de selección aleatoria (C#)
Publicado por: erest0r en 7 Junio 2014, 22:24 pm
Hola, como decidi empezar a practicar C# .NET , de lo poco que he podido aprender aqui dejo un ejercicio resuelto de seleccion aleatoria por si a alguien le interesa:

Código
  1. using System;
  2.  
  3. namespace Prueba1
  4. {
  5.    /*
  6.         Un asesino, cansado de elegir sus victimas de la manera habitual, decide hacer la seleccion de una manera mas especial
  7.         para esto decide seleccionarlas aelatoriamente. Cree un programa que le permita agrupar a sus posibles victimas y asignarles
  8.         un numero y que sea el programa quien decida a quien debe asesinar al momento de que le apetesca para esto debe tener en
  9.         consideracion la siguiente condicion:
  10.             *Una vez seleccionado una victima , el sistema debera omitir esta persona en la proxima busqueda,de manera que nunca salga
  11.             la misma posicion dos veces.
  12.      */
  13.    class Program
  14.    {
  15.        static void Main(string[] args)
  16.        {
  17.            Console.WriteLine("--------------Asesino Serial--------------");
  18.            Console.Write("Ingrese cuantas personas se asesinaran: ");
  19.            int victimas = int.Parse(Console.ReadLine());
  20.  
  21.            Asesino asesino = new Asesino(victimas);
  22.  
  23.            while (asesino.cantVictimasAsesinada != victimas)
  24.            {
  25.                Console.WriteLine("Persona asesinada: {0}", asesino.asesinar());
  26.            }
  27.  
  28.            Console.ReadLine();
  29.        }
  30.    }
  31.  
  32.    class Asesino
  33.    {
  34.  
  35.        private int[] victimas;
  36.  
  37.        // Indica el numero de la victima cayo aleatoriamente
  38.        private int victima;
  39.  
  40.        // LLevamos la cuenta de cuantas victimas han sido asesinadas
  41.        private int victimasAsesinadas;
  42.        public int cantVictimasAsesinada { get { return victimasAsesinadas; } }
  43.  
  44.        // Nuestro objeto que trabajara con variables aleatorias
  45.        Random random;
  46.        public Asesino(){ }
  47.        public Asesino(int victimas)
  48.        {
  49.  
  50.            victimasAsesinadas = 0;
  51.            this.victimas = new int[victimas];
  52.            for (int i = 0; i < this.victimas.Length; i++)
  53.            {
  54.                this.victimas[i] = i + 1;
  55.            }
  56.  
  57.            random = new Random();
  58.        }
  59.  
  60.        public int asesinar()
  61.        {
  62.            do
  63.            {
  64.                victima = random.Next(0, victimas.Length);
  65.            } while (victimas[victima] == 0);
  66.  
  67.            // Establecemos la posicion de la casilla en 0 para indicar que la victima ya fue seleccionada
  68.            victimas[victima] = 0;
  69.  
  70.            // Aumentamos el numero de victimas asesinadas
  71.            victimasAsesinadas++;
  72.  
  73.            return victima + 1;
  74.        }
  75.    }
  76. }
  77.