Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

consulta while

Iniciado por matias.giugge, Abril 16, 2016, 07:37:55 AM

Tema anterior - Siguiente tema
Abril 16, 2016, 07:37:55 AM Ultima modificación: Abril 16, 2016, 09:47:25 AM por pioj
Necesito hacer un programa que genere números de manera aleatoria, hasta que alguno de sea múltiplo de 2 y de 3 a la vez. No se que poner en el while para que se repita la condicion. yo tenia pensado usar algo asi:
int num;
        int contador = 1;
 
        num = Random.Range(1, 10);
        print("el numero es " + num);
        while (num % 2 != 0 && num % 3 != 0)                         ESTA PARTE EL PROGRAMA ME LA HACE 2 VECES SOLAMENTE
        {
            contador++;
            num = Random.Range(1, 10);
            print("el numero es " + num);
                           
          }
        if (num % 2 == 0 && num % 3 == 0)                              ACA MOSTRARIA EL NUMERO QUE ES MULTIPLO DE AMBOS
        {
            print("es multiplo de ambos" + " " + num);
        }
        print(contador);
Si alguien me ayuda a resolverlo o a darme un pista de como realizarlo se agradece.

Abril 16, 2016, 04:10:50 PM #1 Ultima modificación: Abril 17, 2016, 10:08:58 AM por pioj
un consejo para evitarte repetir estas lineas de codigo puedes usar el do while, la diferencia es que primero ejecutara el bloque de codigo dentro y despues entrara a la condicional num = Random.Range(1, 10); print("el numero es " + num); 
Cita de: matias.giugge" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35660" data-ipsquote-contentcommentid="129734 date=1460785075num = Random.Range(1, 10); print("el numero es " + num);
 y eso que tienes no te funciona?

Abril 16, 2016, 05:22:19 PM #2 Ultima modificación: Abril 16, 2016, 05:24:08 PM por matias.giugge
Cita de: isai date=1460815850" data-ipsquote="" data-cite="isai" class="ipsQuote y eso que tienes no te funciona?
si si lo del do while lo se, lo que pasa que lo tengo que hacer en todos los formatods while do while. Yo creo que como lo hice tendria que andar pero solamente me busca 2 numeros y termina. La condicion esta bien no?El problema no es el random.range es la condicion que no la hace hasta que encuentra el numero 6 sino la hace 1 vez. (ya que es el unico numero q es multiplo de ambos.) 

asi como tienes el random te hara un random del 1 al 9 porque el ultimo numero lo excluye si quisieras que sea al 10 seria 
 num = Random.Range(1, 11);
aunque realmente no creo que ese sea el problemaahora creo que tu error esta en la condicional, no tiene que ser diferente de 0 si no igual a 0

el problema es la condicion por que estoy preguntando te estas enfocando en algo que se q esta bien amigo

Yo pondria el contador dentro del if y en la condicion del while contador<2, asi cuando encuentre un numero que sea multiplo de 2 y de 3 contador sea 2 y salga.

El problema es la condición del While(); Esta faltando un poco de lógica en el foro ... Te dejo la solucion!, pero debes prestar un poco mas de atención. 
Random rnd = new Random();
int num = rnd.Next(1, 500);

while (num % 2 != 0 || num % 3 != 0)
{
    num = rnd.Next(1, 500);
}

if (num % 2 == 0)
{
    print(num  +"<--- es multiplo de 2");
}

if (num % 3 == 0)
{
    print(num  +"<--- es multiplo de 3");
}
 

Cita de: francoe1 date=1460828598" data-ipsquote="" data-cite="francoe1" class="ipsQuoteTe dejo la solucion!, pero debes prestar un poco mas de atención.
Sin palabras xDDD

[quote author=Arthure" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="35660" data-ipsquote-contentcommentid="129755 date=1460830153]Sin palabras xDDD[/quote]¿A que se debe esto @Arthure?, No lo entendi...

Se debe a que decir "te dejo la solucion pero debes prestar un poco mas de atencion" ... xDDDTal vez estoy muy equivocado, pero se trata de una persona que ha hecho dos consultas en el foro y observando las preguntas que ha realizado ... perfectamente se podria tratar de los tipicos ejercicios que se realizan cuando estas empezando a programar (de hecho, me recuerdan mucho a los ejercicios que realizaba hace un par de decadas). Por eso es, que si estoy en lo cierto, su problema no ha sido falta de atencion si no su condicion de estar aprendiendo programacion.En realidad habria que alabar al chico ... si se esta esforzando en aprender programacion antes de querer hacer un videojuego, es algo muy positivo. Repito : si no fuera porque esto es un foro sobre Unity, viendo sus consultas y los codigos que ha aportado para que se le ayude (que tambien es algo raro por aqui) diria que se trata de una persona que esta aprendiendo y que no sabe que existe Unity por lo que no necesariamente estaria intentando hacer un videojuego antes de saber programar como suele pasar.Lo mas habitual es encontrarse personajes que no saben programar y dicen "Quiero hacer X cosa, alguien me puede ayudar por favor" ... que uno se queda pensando "y si primero aprendes a programar, despues lo intentas hacer tu y cuando no te salga pegas el codigo de lo que has hecho para que la gente pueda corregirte y decirte donde te estas equivocando".Por todo eso es que creo que la frase "te dejo la solucion pero debes prestar un poco mas de atencion", que es la tipica frase que le podria decir un profesor a su alumno, sobra y solo poniendo el codigo corregido hubiera quedado mucho mejor ... mas cuando la dice alguien que hace un tutorial (el objetivo de un tutorial es enseñar a la gente) y lo tiene que rehacer por completo por estar lleno de errores pero eso es otra historia.Un cordial saludo

Aunque estoy de acuerdo contigo , @Arthure , yo no le daría más vueltas al tema, y mucho menos comenzar un debate sobre lo que el autor hace o deje de hacer. Se le resuelve la duda, si se sabe, y punto. Hablaré un poco más sobre este tema, en otra sección...

Etiquetas: