Aprendizaje Programación 101: 1 - Introducción C# desde cero

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

    98
    154
    192
    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,
     
  4. RayK87

    RayK87 Nuevo Insider

    1
    0
    34
     
  5. 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
     
  6. milly

    milly Nuevo Insider

    2
    0
    41
     
  7. 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
     
  8. NahuelPlaysG

    NahuelPlaysG Insider Principiante

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

    Antoniodelaiglesia Microsoft Insider

    2.533
    1.634
    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 Fernando de las Heras le gusta esto.
  10. SteveWolf99

    SteveWolf99 Nuevo Insider

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

    Antoniodelaiglesia Microsoft Insider

    2.533
    1.634
    680
    Tienes que poner el mayor de los números que ha introducido el usuario. No comprendo tu duda.
     
  12. milly

    milly Nuevo Insider

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

    Hector Indriago Nuevo Insider

    1
    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/
     
Cargando...
Otros hilos similares...
  1. Nazareno

    Aprendizaje Programación web

    Resp.:
    3
    Visitas:
    101
  2. FJ Corb
    Resp.:
    0
    Visitas:
    133
  3. Antoniodelaiglesia
    Resp.:
    91
    Visitas:
    11.439
  4. Webserveis
    Resp.:
    4
    Visitas:
    665