dark_sasuke escribió:es que weno imprimo fuera del bucle
[Curso] Introducción a la programación en C (VIII)
Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, m0skit0, LnD, ka69, zacky06
Re: [Curso] Introducción a la programación en C (VIII)

- dark_sasuke
- Moderador Global

- Mensajes: 3380
- Registrado: 03 Sep 2009, 02:13
- Twitter: D4rkyt0
Re: [Curso] Introducción a la programación en C (VIII)
no profe, me refiero a probando imprimiendo fuera del bucle y pasa lo antes mencionado
Spoiler:

Re: [Curso] Introducción a la programación en C (VIII)
Así siguen estando dentro del bucle, melón. Para que no estén dentro del bucle necesitas poner un ; detrás del while...

- dark_sasuke
- Moderador Global

- Mensajes: 3380
- Registrado: 03 Sep 2009, 02:13
- Twitter: D4rkyt0
Re: [Curso] Introducción a la programación en C (VIII)
m0skit0 escribió:Así siguen estando dentro del bucle, melón. Para que no están dentro del bucle necesitas poner un ; detrás del while...
ah perdon profe eso no lo sabia

Re: [Curso] Introducción a la programación en C (VIII)
Cuando es una sola instrucción (un if..else... es una sola), no hace falta poner las llaves, por ejemplo:
Imprime del 1 al 10.
Pero si cerramos el while, no hay bucle, por ejemplo:
Imprime sólo el 10.
Ojito con los ; que traen más de un quebradero de cabeza
PD: tú que has dado un poco de Pascal, podrás ver que en Pascal esto no ocurre, ya que es obligatorio el uso de BEGIN y END independientemente del número de instrucciones
Por eso se dice que Pascal es más estricto que C.
Código: Seleccionar todo
i = 0;
while(i++<10)
// El printf es por cada vuelta del bucle
printf("%d ", i);Imprime del 1 al 10.
Pero si cerramos el while, no hay bucle, por ejemplo:
Código: Seleccionar todo
i = 0;
while(i++<10);
// Es el bucle y luego el printf
printf("%d ", i);Imprime sólo el 10.
Ojito con los ; que traen más de un quebradero de cabeza
PD: tú que has dado un poco de Pascal, podrás ver que en Pascal esto no ocurre, ya que es obligatorio el uso de BEGIN y END independientemente del número de instrucciones

- dark_sasuke
- Moderador Global

- Mensajes: 3380
- Registrado: 03 Sep 2009, 02:13
- Twitter: D4rkyt0
Re: [Curso] Introducción a la programación en C (VIII)
pasa lo comentado profe, si inserto un primo, dice al menos 10 veces que no es primo y al final dice que si lo es, con los no primos si va bien :S
perdon por ser tan pesaito con el tema pero es que el tema de la programacion me gusta
si el pascal te pide BEGIN y END obligatoriamente pero profe END. con el puntito que si no no compila
perdon por ser tan pesaito con el tema pero es que el tema de la programacion me gusta
si el pascal te pide BEGIN y END obligatoriamente pero profe END. con el puntito que si no no compila
Spoiler:

Re: [Curso] Introducción a la programación en C (VIII)
Vamos a ver... Tal y como lo tienes, funciona tal que así:
No imprime nada 10 veces, ya que el bucle está vacío. Comprueba que estés ejecutando el programa compilado correcto o si has vuelto a compilarlo tras modificarlo
En todo caso, tu fallo radica en que marca siempre no primo. Cuando el número insertado es primo, por ejemplo 5, cuando bucle llega a 5, se cumple que num_insertado%bucle++!=0 es falso (o lo que es lo mismo, num_insertado%bucle++==0). Peeeero al haber puesto bucle++ en la condición, independientemente de que se cumpla o no la condición bucle pasa a ser 6, por tanto nunca se va a cumplir if(num_insertado==bucle), a menos que numero_insertado sea divisible por número_insertado - 1 (algo que es imposible -salvo para el 2-).
PD: pon siempre un "\n" al final del programa para que no quede el prompt pegado a la última frase (tu numero NO es primom0skit0@sodiet:~/Temp$ ) xD
Código: Seleccionar todo
m0skit0@sodiet:~/Temp$ ./prueba
bienvenido a este programa :)
por favor inserte un numero entero : 11
tu numero NO es primom0skit0@sodiet:~/Temp$
m0skit0@sodiet:~/Temp$ ./prueba
bienvenido a este programa :)
por favor inserte un numero entero : 15
tu numero NO es primom0skit0@sodiet:~/Temp$
m0skit0@sodiet:~/Temp$ No imprime nada 10 veces, ya que el bucle está vacío. Comprueba que estés ejecutando el programa compilado correcto o si has vuelto a compilarlo tras modificarlo
En todo caso, tu fallo radica en que marca siempre no primo. Cuando el número insertado es primo, por ejemplo 5, cuando bucle llega a 5, se cumple que num_insertado%bucle++!=0 es falso (o lo que es lo mismo, num_insertado%bucle++==0). Peeeero al haber puesto bucle++ en la condición, independientemente de que se cumpla o no la condición bucle pasa a ser 6, por tanto nunca se va a cumplir if(num_insertado==bucle), a menos que numero_insertado sea divisible por número_insertado - 1 (algo que es imposible -salvo para el 2-).
PD: pon siempre un "\n" al final del programa para que no quede el prompt pegado a la última frase (tu numero NO es primom0skit0@sodiet:~/Temp$ ) xD

- dark_sasuke
- Moderador Global

- Mensajes: 3380
- Registrado: 03 Sep 2009, 02:13
- Twitter: D4rkyt0
Re: [Curso] Introducción a la programación en C (VIII)
gracias profe por la explicacion
te quiero profe!
en un ratito lo posteo arreglado, tengo que poder joder !!! xD
en un ratito lo posteo arreglado, tengo que poder joder !!! xD

Re: [Curso] Introducción a la programación en C (VIII)
Bueno, viendo los errores y mejorando el código posteado anteriormente, acá presento la optimización
Esperando golpiza
Spoiler:
Esperando golpiza
- dark_sasuke
- Moderador Global

- Mensajes: 3380
- Registrado: 03 Sep 2009, 02:13
- Twitter: D4rkyt0
Re: [Curso] Introducción a la programación en C (VIII)
yo lo optimize algo diferente:
PD: tiene el pequeño bug de que si insertas 1 no hace nada y si insertas 0, dice que no es primo
Spoiler:
PD: tiene el pequeño bug de que si insertas 1 no hace nada y si insertas 0, dice que no es primo


