elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Ayuda números aleatorios
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda números aleatorios  (Leído 6,969 veces)
Delikatovic

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Ayuda números aleatorios
« en: 24 Noviembre 2016, 19:18 pm »

No entiendo en qué fallo, para que al elegir Opcion1 me muestre los números aleatorios... Sera por la llamada a la funcion? hago algo mal en Opcion1???
Código:
    class Program
    {
        static void Main(string[] args)
        {
            string op = null;
            int num;
            Console.WriteLine("Elija una opcion:");
            op = Console.ReadKey().ToString();

            switch (op)
            {
                case "1":
                    Opcion1();
                   
                    break;
                case "2":
                    Opcion2();

                    break;
                case "3":

                    break;
                case "4":
                    break;

            }
            Console.ReadLine();
        }
        static void Opcion1()
        {
           
            Random rdn = new Random();
            int a = rdn.Next(10, 30);
            int b = rdn.Next(10, 30);
            Console.WriteLine("Números aleatorios: {0} y {1}", a, b);
           
        }

        static string Opcion2()
        {

        }
    }
}


En línea

Slava_TZD
Wiki

Desconectado Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: Ayuda números aleatorios
« Respuesta #1 en: 24 Noviembre 2016, 19:55 pm »

Tu problema es que estás asignando un ConsoleKeyInfo a una string.

Código
  1. static void Main(string[] args)
  2. {
  3. Console.WriteLine("Elija una opcion:");
  4. switch (Console.ReadKey().KeyChar)
  5. {
  6. case '1':
  7. Opcion1();
  8. break;
  9. default:
  10. break;
  11.  
  12. }
  13. Console.ReadLine();
  14. }


En línea


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Ayuda números aleatorios
« Respuesta #2 en: 25 Noviembre 2016, 00:17 am »

Usa Console.ReadKey().KeyChar


Al pulsar 1 crea los números aleatorios:

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication1
  8. {
  9.    class Program
  10.    {
  11.        static void Main(string[] args)
  12.        {
  13.            char op = '\0';
  14.           // int num = 0;
  15.            Console.WriteLine("Elija una opcion:");
  16.            op = Console.ReadKey().KeyChar;
  17.  
  18.            switch (op)
  19.            {
  20.                case '1':
  21.                    Opcion1();
  22.                    break;
  23.                case '2':
  24.                    Opcion2();
  25.                    break;
  26.                case '3':
  27.                    break;
  28.                case '4':
  29.                    break;
  30.            }
  31.  
  32.            Console.ReadLine();
  33.        }
  34.        public static void Opcion1()
  35.        {
  36.  
  37.  
  38.            Random rdn = new Random();
  39.            int a = rdn.Next(10, 30);
  40.            int b = rdn.Next(10, 30);
  41.            Console.WriteLine(Environment.NewLine);
  42.            Console.WriteLine("Números aleatorios: {0} y {1}", a, b);
  43.  
  44.        }
  45.  
  46.  
  47.        public static void Opcion2()
  48.        {
  49.        }
  50.    }
  51. }




Usa Console.ReadLine() en lugar de Console.ReadKey(), pero tienes que pulsar Enter para iniciar la función

Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication1
  8. {
  9.    class Program
  10.    {
  11.        static void Main(string[] args)
  12.        {
  13.            int op = 0;
  14.           // int num = 0;
  15.            Console.WriteLine("Elija una opcion:");
  16.            op = Convert.ToInt32(Console.ReadLine());
  17.  
  18.            switch (op)
  19.            {
  20.                case 1:
  21.                    Opcion1();
  22.                    break;
  23.                case 2:
  24.                    Opcion2();
  25.                    break;
  26.                case 3:
  27.                    break;
  28.                case 4:
  29.                    break;
  30.            }
  31.  
  32.            Console.ReadLine();
  33.        }
  34.        public static void Opcion1()
  35.        {
  36.  
  37.  
  38.            Random rdn = new Random();
  39.            int a = rdn.Next(10, 30);
  40.            int b = rdn.Next(10, 30);
  41.            Console.WriteLine(Environment.NewLine);
  42.            Console.WriteLine("Números aleatorios: {0} y {1}", a, b);
  43.  
  44.        }
  45.  
  46.  
  47.        public static void Opcion2()
  48.        {
  49.        }
  50.    }
  51. }
  52.  


También:
Código
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplication1
  8. {
  9.    class Program
  10.    {
  11.        static void Main(string[] args)
  12.        {
  13.            string op = null;
  14.           // int num = 0;
  15.            Console.WriteLine("Elija una opcion:");
  16.            op = Console.ReadLine();
  17.  
  18.            switch (op)
  19.            {
  20.                case "1":
  21.                    Opcion1();
  22.                    break;
  23.                case "2":
  24.                    Opcion2();
  25.                    break;
  26.                case "3":
  27.                    break;
  28.                case "4":
  29.                    break;
  30.            }
  31.  
  32.            Console.ReadLine();
  33.        }
  34.        public static void Opcion1()
  35.        {
  36.  
  37.  
  38.            Random rdn = new Random();
  39.            int a = rdn.Next(10, 30);
  40.            int b = rdn.Next(10, 30);
  41.            Console.WriteLine(Environment.NewLine);
  42.            Console.WriteLine("Números aleatorios: {0} y {1}", a, b);
  43.  
  44.        }
  45.  
  46.  
  47.        public static void Opcion2()
  48.        {
  49.        }
  50.    }
  51. }
« Última modificación: 25 Noviembre 2016, 00:38 am por okik » En línea

Delikatovic

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayuda números aleatorios
« Respuesta #3 en: 25 Noviembre 2016, 18:14 pm »

muchas gracias!! le he añadido un do...while para que me siga preguntando opciones :)
Mira.. tengo otro problemilla, en la opción 2:
Desde el main pedir dos cadenas de caracteres (string).La función deberá convertir las dos cadenas a minúsculas, comparar-las, y devolver, por el tercer parámetro(no con return), la palabra “MENOR” si la 1ª cadena es inferior a la 2ª (alfabéticamente), un “MAYOR”, si es mayor alfabéticamente, y un “IGUAL” si son la misma.

No tengo ni idea por donde empezar.. algun enlace de referencia?
« Última modificación: 25 Noviembre 2016, 19:05 pm por Delikatovic » En línea

Slava_TZD
Wiki

Desconectado Desconectado

Mensajes: 1.466

♪ [8675309] ♪


Ver Perfil WWW
Re: Ayuda números aleatorios
« Respuesta #4 en: 25 Noviembre 2016, 19:41 pm »

Código
  1. bool? isit_greater(string a, string b)
  2. {
  3. if (a.Length == b.Length)
  4. return null;
  5. return a.Length > b.Length ? true : false;
  6. }

No es exactamente lo que pides, pero es tu tarea casi resuelta :D googlea mas la próxima vez.
En línea


The fact is, even if you were to stop bombing us, imprisoning us, torturing us, vilifying us, and usurping our lands, we would continue to hate you because our primary reason for hating you will not cease to exist until you embrace Islam.
Delikatovic

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayuda números aleatorios
« Respuesta #5 en: 25 Noviembre 2016, 20:44 pm »

si supieras cuanto googleo...

Estoy creando el código, ahora lo paso a ver si alguien me ayuda
En línea

Delikatovic

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayuda números aleatorios
« Respuesta #6 en: 25 Noviembre 2016, 21:34 pm »

Código
  1. bool? isit_greater(string a, string b)
  2. {
  3. if (a.Length == b.Length)
  4. return null;
  5. return a.Length > b.Length ? true : false;
  6. }

No es exactamente lo que pides, pero es tu tarea casi resuelta :D googlea mas la próxima vez.

Lo tengo a media.. cuando elijo la opcion2 ni me pregunta por el texto a escribir, que hago??
Codigo del main
Código:
case '2':
                    Console.WriteLine("Introduce texto:");
                    texto1= Console.ReadLine();
                    Console.WriteLine("Introduce texto:");
                    texto2= Console.ReadLine();
                    Opcion2(ref texto1, ref texto2, out compara);
Codigo de la funcion Opcion2
Código:
public static void Opcion2( ref string a, ref string b, out int c)
        {
            Console.WriteLine(a.ToLower());
            Console.WriteLine(b.ToLower());
            c = string.Compare(a, b);
            Console.WriteLine(c);
        }

me echan un cable?
En línea

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Ayuda números aleatorios
« Respuesta #7 en: 26 Noviembre 2016, 13:40 pm »

En el case 2

Código
  1.  Console.WriteLine(Environment.NewLine);
  2.               Console.WriteLine("Introduce texto 1:");
  3. string texto1 = Console.ReadLine();
  4. Console.WriteLine("Introduce texto 2:");
  5. string texto2 = Console.ReadLine();
  6. Opcion2(texto1, texto2);
  7.                break;
  8.  


la función Option2:
Código
  1. public static void Opcion2(string a, string b)
  2.        {
  3.            int c = 0;
  4.            c = string.Compare(a, b);
  5.            switch (c)
  6.            {
  7.                case -1:
  8.                    Console.WriteLine(Environment.NewLine);
  9.                    Console.WriteLine("{0} y {1} --> {2}", a.ToLower(), b.ToLower(), "Son diferentes");
  10.                    break;
  11.                case  0:
  12.                    Console.WriteLine(Environment.NewLine);
  13.                    Console.WriteLine("{0} y {1} --> {2}", a.ToLower(), b.ToLower(), "Son iguales");
  14.                    break;
  15.            }
  16.  
  17.        }
  18.  


Te comento, no  se para que pones el REF y el OUT C en la declaración de la función si es la misma función la que luego muestra el resultado en la consola.

"Ref" es para desde la función introducir un valor o nuevo valor a una variable declarada en otra parte del código. Como tras usar la variable en la función no la usas más desde el 'Case' no entiendo para qué le pones el Ref. El uso correcto de ref sería asi..:

En case 2
Código
  1.  
  2.   Console.WriteLine(Environment.NewLine);
  3.               string a= null;
  4.               string b= null;
  5.                 int c = 0;
  6.                   Opcion2(ref a, ref b, ref c);
  7.  
  8.            switch (c)
  9.            {
  10.                case -1:
  11.                    Console.WriteLine(Environment.NewLine);
  12.                    Console.WriteLine("{0} y {1} --> {2}", a.ToLower(), b.ToLower(), "Son diferentes");
  13.                    break;
  14.                case  0:
  15.                    Console.WriteLine(Environment.NewLine);
  16.                    Console.WriteLine("{0} y {1} --> {2}", a.ToLower(), b.ToLower(), "Son iguales");
  17.                    break;
  18.            }
  19.                    break;
  20.  
  21.  

La función option 2:
Código
  1. public static void Opcion2(ref string a,ref string b, ref int c)
  2.        {
  3.  
  4.            Console.WriteLine(Environment.NewLine);
  5.            Console.WriteLine("Introduce texto 1:");
  6.            a = Console.ReadLine();
  7.  
  8.            Console.WriteLine("Introduce texto 2:");
  9.            b = Console.ReadLine();
  10.            c = string.Compare(a, b);
  11.        }
  12.  

Aunque realmente tampoco sería del todo correcto pues la función en este caso no necesita que a y b tengan ningún valor para trabajar con esas variables. En su lugar usar out:

Código
  1.  
  2. ...
  3. Opcion2(out a, out b, out c);
  4. ...
  5.  

Código
  1. public static void Opcion2(out string a, out string b, out int c)
  2.        {
  3.    ....
  4.        }
  5.  


En resumen Ref es para valores de ida y vuelta, ida para la función y vuelta lo que se establece en la función  o subproceso para esa variable.

Por ejemplo (lo he rectificado, estaba mal hecho):

Código
  1. namespace ConsoleApplication1
  2. {
  3.    class Program
  4.    {
  5.        static void Main(string[] args)
  6.        {
  7.            int a = 5;
  8.            int b = 8;
  9.            int c = 0;
  10.            Multiplicar(ref a, ref b, out c);
  11.            Console.WriteLine("a + 5 = {0}", a);
  12.            Console.WriteLine("b + 5 = {0}", b);
  13.            Console.WriteLine("c= a * b = {0}", c);
  14.            Console.ReadLine();
  15.        }
  16.           public static void Multiplicar(ref int a, ref int b, out int c)
  17.        {
  18.         a+= 5;
  19.         b+= 5;
  20.         c = a * b;
  21.        }
  22.    }
  23. }
  24.  

En este caso A llega a la función como 5 y B como 8, luego le suma 5 a cada uno y establece el nuevo resultado en A y B, luego los multiplica y asigna el valor a C
« Última modificación: 26 Noviembre 2016, 16:15 pm por okik » En línea

Delikatovic

Desconectado Desconectado

Mensajes: 8


Ver Perfil
Re: Ayuda números aleatorios
« Respuesta #8 en: 27 Noviembre 2016, 16:39 pm »

La verdad es que los ref y out no los tengo claro..
En línea

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Ayuda números aleatorios
« Respuesta #9 en: 27 Noviembre 2016, 16:55 pm »

La verdad es que los ref y out no los tengo claro..

Hombre, pues ya lo he explicado.

Es una variable de ida y vuelta. Entra en la función con un valor, y cuando se procesa la función sale con otro valor.

Se declara una variable antes de llamar a la función. Pongamos int A= 16;


Luego llamas a la función FunciónX(ref int valor) del modo FunciónX(ref A). Entonces la función trabajará con dicho valor A=16.

En la funciónX, se establece un nuevo valor para A, pongamos A= A * 2. Ahora después de la declaración de la función tendrá valor 32


Código
  1. funciónX(ref int Valor)
  2. {
  3. Valor= Valor * 2
  4. }
  5.  


Código
  1. //A tiene valor 16
  2. int A= 16;
  3.  
  4. //Entra dentro como A=16  y opera como A= 16* 2= 32 y ahora el nuevo valor es 32
  5. FunciónX(ref A);
  6.  
  7. //a partir de aquí el valor de A es 32
  8.  
  9. //Muestra el valor de A que es 32
  10. console.WriteLine(A);


« Última modificación: 27 Noviembre 2016, 16:58 pm por okik » En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines