Aprendizaje Programación 101 [2017] - Introdución a C# y a la programación

Tema en 'Desarrollo' iniciado por Antoniodelaiglesia, 27 May 2016.

  1. cggr

    cggr Nuevo Insider

    1
    0
    46
    Desconozco si te han respondido ya, pero estoy haciendo el ejercicios ahora y me pasó lo mismo. El problema es que le estás dando un valor a "aleatorio" al comienzo del bucle for, por lo tanto ese valor no cambia, si vuelves a poner la instrucción " aleatorio = eleccion.Next(0, 2); " al final, antes de que termine el bucle, vuelves a dar un número valor a la variable "aleatorio" y por lo tanto tienes un número nuevo.
     
  2. Cristofer_CD

    Cristofer_CD Insider conocido

    100
    154
    208
    El valor de la variable "aleatorio" cambia cada vez que se hace una iteración del for, así que ese no es el problema. Si es cierto que volviendo a ejecutar "elección.Next(0,2)" al final "se arregla", pero el problema yo creo que es algo más complicado. Intentaré explicarlo lo mejor que pueda, pero supongo que es complicado de entender para los principiantes.
    Para generar números aleatorios, lo que se hace es partir de una "semilla", como un valor fijo a partir del cual se van generando una secuencia de números aleatorios. Algo muy común es utilizar el momento actual (en milisegundos) como semilla, así es muy probable que no se generen dos semillas iguales.
    En el código de arriba, se están haciendo dos llamadas a new Random(), con lo que es muy probable que ambos tengan la misma semilla y generen la misma secuencia. Con esto lo que sucede es que las variables res y aleatorio, aunque se generan con dos instancias de Random diferentes, lo más probable es que usen la misma semilla y estén generando la misma secuencia, con lo que casi siempre "res" es igual a "resultado".

    Lo más correcto en este caso sería simplemente lo siguiente:
    var random = new Random();
    if (random.Next(0,2) == 0)
        ganadas++;
    else
        perdidas++;
    

    Con esto simulamos la misma probabilidad que lanzando una moneda.
     
  3. NahuelPlaysG

    NahuelPlaysG Insider Principiante

    4
    0
    46
    Hola:
    Haciendo uso de la programación orientada a objetos puede ser sencillo el cronómetro.

    Crea una clase llamada Cronómetro, luego los métodos, iniciar, pausar y detener.
    Crea una propiedad llamada Tiempo de tipo Timer
    Crea una propiedad publica llamada Resultado de double
    Crea una metodo para sobre escribir el método ToString(); y mostrar el resultado que así deseas:

    En tu formulario entonces creas los botones y sus eventos respectivos y generas una instancia de tu clase cronómetro y haces los llamados en cada evento, así:

    using System;
    using System.Globalization;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
       public class Cronometro
       {
           private Timer Tiempo { get; set; }
           public Double Result { get; set; }
    
           public Cronometro()
           {
               Tiempo.Tick += new EventHandler(Tiempo_Tick);
               Tiempo.Interval = 100;
           }
    
           void Tiempo_Tick(object sender, EventArgs e)
           {
               Result++;
               //cada tick representa 100 milisegundos
           }
    
           public void Start()
           {
               Tiempo.Start();
           }
    
           public void Pause()
           {
               //
           }
    
           public void Stop()
           {
               Tiempo.Stop();
           }
    
           public override string ToString()
           {
               return string.Format(
                   CultureInfo.CurrentCulture,
                   "{0} ms",
                   Result);
    
           }
       }
    }
    y luego:
    
    using System;
    using System.Windows.Forms;
    
    namespace WindowsFormsApplication1
    {
       public partial class Form1 : Form
       {
           public Cronometro Cronometro { get; set; }
    
           public Form1()
           {
               InitializeComponent();
               Cronometro = new Cronometro();
           }
    
           private void btnStart_Click(object sender, EventArgs e)
           {
               Cronometro.Start();
           }
    
           private void btnStop_Click(object sender, EventArgs e)
           {
               Cronometro.Stop();
           }
       }
    }
    

    Para mostrar el resultado utiliza el método Cronometro.ToString();

    Saludos,
     
    Última edición por un moderador: 19 Oct 2017 a las 03:26
  4. wal seon

    wal seon Nuevo Insider

    1
    0
    34
    alguien me podria ayudar quiero ingresar 5 notas y sacar el promedio sin la menor y la mayor nota
     
  5. milly

    milly Nuevo Insider

    2
    0
    41
     
  6. SteveWolf99

    SteveWolf99 Nuevo Insider

    2
    0
    68
    tengo una duda acerca de la respuesta del leccion 3
    • Escribe un programa que pregunte al usuario por números hasta que introduzca 0 y luego escribir el mayor de estos
    la respuesta tiene ser el mayor numero de todos los ingresados nadamas?
    por piden ingresar cualquier numero luego escribir el (mayor) tengo que escribir el numero mayor de los que ingresado o otro?
    y el resultado debe ser el mayor?? ese es el planteamiento o me equivoco?? ayuden xd
     
  7. NahuelPlaysG

    NahuelPlaysG Insider Principiante

    4
    0
    46
    Uff todavia hay gente aqui.
    La verdad que es muy facil
     
  8. Antoniodelaiglesia

    Antoniodelaiglesia Insider Pro ★ Buena reputación

    2.540
    1.638
    680
    Bueno, pues tras recibir multitud de Emails y de otras comunicaciones que me animan a que siga, y tras un periodo laboral donde estoy bastante menos ocupado, deciros que voy a retomar el Programación 101. Como siempre, el curso será gratuito, pero habrá un Patreon para que podáis mostrar vuestro apoyo, ya que las lecciones me lleva mucho tiempo prepararlas.

    Más detalles en los próximos días.

    Saludos.
     
    A DaniCode y Fernando de las Heras les gusta esto.
  9. SteveWolf99

    SteveWolf99 Nuevo Insider

    2
    0
    68
    no pos gran ayuda no?
     
  10. Antoniodelaiglesia

    Antoniodelaiglesia Insider Pro ★ Buena reputación

    2.540
    1.638
    680
    Tienes que poner el mayor de los números que ha introducido el usuario. No comprendo tu duda.
     
  11. milly

    milly Nuevo Insider

    2
    0
    41
    Me encantan tus videos y me ayudan mucho( Soy estudiante de Software), You are great :)
     
  12. Hector Indriago

    Hector Indriago Nuevo Insider

    2
    0
    34
    Para el ejercicio del video 4... 4.1 he realizado lo siguiente:
    Console.WriteLine("Simulador del Lanzamiento de Monedas");
    
                int cara = 0;
                int cruz = 0;
              
    
                for (int i = 1; i <= 10000; i++)
                {
                    Random moneda = new Random();
                    int resultado = moneda.Next(0, 2);
    
    
                    if (resultado == 1)
                    {
                        cara++;
                      
                    }
                    else
                    {
                        cruz++;
                      
                    }    
                  
                }
                Console.WriteLine("El Número de veces que ha salido cara es " + cara);
                Console.WriteLine("El Número de veces que ha salido Cruz es " + cruz);
    
    
    
                Console.ReadKey();
    


    Pero de verdad me cuesta un poco visualizar la resolución del 4.2... me ayudarias un poco? Antoniodelaiglesia - https://www.foroinsider.com/members/antoniodelaiglesia.1/
     
    Última edición por un moderador: 19 Oct 2017 a las 03:26
  13. Hector Indriago

    Hector Indriago Nuevo Insider

    2
    0
    34
    Esta seria mi resolucion...
    Console.WriteLine("Loteria... ;) ");
                Console.Write("Por Favor Introduzca su Número a Jugar de 5 Dígitos: ");
                int minumero = Convert.ToInt32(Console.ReadLine());
                int numero = 0;
                int semana = 0;
                int años;
    
              
                    if (minumero.ToString().Length < 5)
                    {
                        Console.WriteLine("Número no válido");
                        Console.ReadKey();
                    }
                    else
                    {
    
                        Random aleatorio = new Random();
    
                        while (numero != minumero)
                        {
    
                            numero = aleatorio.Next(0, 99999);
                            semana++;
                          
                        }
    
                        Console.WriteLine("Comprobaremos Cuando ganaras con ese Número...");
    
                        años = semana / 52;
                      
                            Console.WriteLine("Para que tu Número " + minumero + " sea ganador!!!... deberas esperar " + semana + " semanas");
                            Console.WriteLine("Ganaras con tu Número " + minumero + " en " + años + " años");
                      
                                          
    
                        Console.ReadKey();
    
     
    Última edición por un moderador: 19 Oct 2017 a las 03:27
  14. Antoniodelaiglesia

    Antoniodelaiglesia Insider Pro ★ Buena reputación

    2.540
    1.638
    680
    Sería conveniente que metieras todo el código entre etiquetas code...
    Si no se hace muy dificil de leer.
     
  15. Antoniodelaiglesia

    Antoniodelaiglesia Insider Pro ★ Buena reputación

    2.540
    1.638
    680
    El 4.2 te dice que anotes las rachas máximas de caras y de cruces. Créate cuatro variables enteras que se llamen rachacara, rachacruz, rachacaracontador y rachacruzcontador, por ejemplo, y una tercera de tipo int que inicializaras a 0 que se llame ultimajugada. Ahora, si sale cara, cambia el valor de ultimajugada a 1, si sale cruz a dos. Después, antes de eso, si ultimajugada es igual a 1 (si sale cara) o a 2 (si sale cruz) aumenta racahacaracontador o rachacruzcontador en uno, si no, resetealos a 0. Luego comprueba si rachacaracontador o rachacruzcontador son mayores que rachacara o rachacruz respectivamente y si lo son sobreescribe su valor.
     
  16. ANDY PERALTA

    ANDY PERALTA Nuevo Insider

    1
    0
    56
    La verdad que no sabia como resolverlo estoy siguiendo el curso y me da gusto que los videos aun esten en la plataforma para poder aprender de ellos.

    ahora que me pongo a leer los comentarios de la comunidad me di cuenta que genial y al resolver este problema de los promedios yo lo tengo hecho en base a pedir notas de estudiantes pidiendo las 5 notas por separada y luego hacer la suma de estos y la division de los mismos despues comparar el valor promedial pero lo que aun no logro resolver es que cuando el usuario no ingrese una nota el programa le indique error y esa funcion no se cumple supongo que justo hay esta el dilema y de la manera en como lo expones creo que cumpliria dicha funcion intentare resolverlo de otra manera. (Y)
     
  17. Elapaman

    Elapaman Nuevo Insider

    2
    0
    56
    Recien llego al curso. estoy en la tarea de la lección 4. tengo un problema. al comparar los dos numeros random, me salene iguales siempre. ya intente ponerlos antes de compararlos en una variable, y tampoco, ambos numeros salen igual. lo que si me funciona es que en uno de los randoms pida un .next adicional, asi ya quedan "desincronizados" y ya el resultado se parece a lo previsto por Antonio. ¿ estoy haciendo algo mal? ¿es una "caracteristica" del metodo random.next();? saludos. gracias
     
Cargando...
Otros hilos similares...
  1. Nazareno

    Aprendizaje Programación web

    Resp.:
    3
    Visitas:
    120
  2. FJ Corb
    Resp.:
    0
    Visitas:
    134
  3. Antoniodelaiglesia
    Resp.:
    91
    Visitas:
    11.538
  4. Webserveis
    Resp.:
    4
    Visitas:
    669