Duda con while (C#)

erdanblo

Tengo que sacar los números que sean múltiplos de 5 entre 1 y 100, y tengo este código que me funciona:

http://mv.pastebin.com/m6a24a573

Mi pregunta es si se puede meter ese "if" dentro de las condiciones del while, y como se haría, es que intento ponerlo así:

while ((Num <= 100) && (Num >= 1) && ((Num%5) == 0));

Me he encabezonado con eso... :/, la verdad es que tal como estoy ahora, no se si lo que digo es una burrada

elhamo

Si pones eso llegará hasta 5 y saldrá del while.

Como lo tienes te sobra hasta el num >= 1.

Bueno!

javithelong

Como dice #2, si metes la condición en el while, saldrá al encontrar el primer múltiplo y se acabará el programa. Se puede meter la condición en el while, pero el programa deja de hacer lo que buscas XD

ExTiNcT_

num=1;
while (num>=1 && num<=100)
{
{

if(num%5==0)
printf("%i",num);
}
num=num+1;
}

PD: está en C no se si podras sacar alguna idea o te servirá de algo :)

scumah

#2, #3, pues yo creo que ni entraría en el while ¿no? ¿O estoy cagándola treméndamente? xD

A ver, si Num empieza a 1, y para entrar en el while se tiene que cumplir que (Num%5) == 0, ni siquiera entraría, porque 1%5 = 1 joder xD A parte #1, no se porque metes Num >= 1 entre las condiciones, si lo inicializas ya a 1 :S

En cualquier caso, no creo que sirva como pones en #1.

ExTiNcT_
erdanblo

Entonces el if dentro del while, es "viable"? joe, es que lo veo feo no sé por que xD.

elhamo

#5 Entra porque es un do while ^^
#7 xDDDD es lo + normal del mundo

Soltrac

#7 pero pq no va a ser viable? No es cuestión de q sea C#, es cuestión de q todos los lenguajes de programación dejan hacerlo xD

Y no, no se ve feo :), es lo más normal del mundo poner condicionales en bucles :P

Ah y por supuesto sobra comprobar q num >= 1 ya q lo inicializas a 1 y estás haciendo una comparación mas en cada iteración, cosa absurda.

erdanblo

Los del Num>=1 si que es recurrente, no se por que lo puse la verdad, será la poca costumbre que tengo de inicializar las variables y demás (PHP...)

cabron

erdanblo, todos los bucles tienen siempre una condición, si no, el bucle no terminaría nunca... y en la condicion puedes poner lo que te de la gana, siempre que sea una expresión que evalue a true o false.

IAF

Yo diria que lo de 4 esta bien pero sobra un {} no?

Con un for 1 hasta 100; si %5==0; printf; no seria mas rapido i sencillo ? XD

P

O puedes hacer "trampa" ya que sabes de antemano que numeros seran:

for (int Num = 1; Num < 20; Num++)
Console.WriteLine(Num*5);

dagavi

Si tienes que poner todos los números de 1 a 100 múltimos tienes que hacer, como bien te dicen:

while (num <= 100)

Y dentro comprobar si 0 == num%5 o no.

¿No podrías (cambiando el inicio si hace falta) hacer:

for (int i = 0; i <= 100; i += 5) escribe(i);

O lo que es casi lo mismo:

int i = 0; // Ó 5, según donde empieces
while (i <= 100) {
escribe(i);
i += 5;
}

?? Te quitarías comparaciones y multiplicaciones (siempre se cumple que sea divisible por 5)

SeiYa

Yo le haría:

(for int i=5;i<=100;i = i+5)
{
system ... (i);
}

YavestruZ

Una pregunta un poco tonta que no me entero xDDD. Cuando decis un if dentro del while, a que os refefir?
a:

while (if..., ....., ...)

o a while (........){
if (...)

...

}
}
?

cabron

A ver, un bucle siempre tiene un if obligatorio, aunque no se ponga explícitamente if.

while(lo que sea)
hacer cosas

Viene a significar

if (lo quesea )
hacer cosas
comprobar if otra vez

De echo un while se podría hacer poniendo explicitamente un if usando un goto así:

kk:
if( a == 5)
{
mi_funcion();

goto kk;
}

Pero es absurdo, y se usa while , que esconde el if, aunque realmente está ahí.

Aparte de ese if obligatorio, dentro de un bucle while puedes meter todos los ifs que te de la gana


while (lo que sea)
{
if(tal)
hacer_cual()
}

Usuarios habituales

  • cabron
  • YavestruZ
  • SeiYa
  • erdanblo
  • elhamo
  • ExTiNcT_
  • scumah