Autor
|
Tema: Hacer mientras en C (Leído 3,100 veces)
|
neeeko
Desconectado
Mensajes: 35
|
Hola gente , buen día ,estoy ejercitando para la facu y estuve programando en Pseudocodigo hasta ahora , y no consigo hacer funcionar el do while . Alguien me podría tirar alguna ayuda ? estructura , ejemplos ? busque , pero no me funciona adjunto código Saludos y gracias. #include<stdio.h> #include<conio.h> #include<string.h> int main() { char copia[30],frase[30]; int sigue=0; printf("Ingrese una frase: "); gets(frase); printf("Desea que se realize un backUp?s=1-n=0 \n"); scanf("%d",&sigue);
do{ printf("Hola");
}while(sigue==1);
}
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
Es facil... cuando tu le pides un dato al usuario este presiona teclas del teclado... estas teclas se transforman en chars... concretamente para el '1' el char correspondiente es el 0x31.
En el while tu estás haciendo la comparación (sigue == 1) o, lo que es lo mismo, (0x31 == 0x01 ).
Obviamente el resultado será falso y no se repetirá el bucle.
Soluciones:
* cambiar la condición por ( sigue == '1' ) * convertir el char a int
Un saludo
|
|
|
En línea
|
|
|
|
neeeko
Desconectado
Mensajes: 35
|
Es facil... cuando tu le pides un dato al usuario este presiona teclas del teclado... estas teclas se transforman en chars... concretamente para el '1' el char correspondiente es el 0x31.
En el while tu estás haciendo la comparación (sigue == 1) o, lo que es lo mismo, (0x31 == 0x01 ).
Obviamente el resultado será falso y no se repetirá el bucle.
Soluciones:
* cambiar la condición por ( sigue == '1' ) * convertir el char a int
Un saludo
Nose que dato queres que cambie por int que variable . Lo que queiro es que haga es que entre si sigue=1 sino que no haga nada.
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
Nose que dato queres que cambie por int que variable . Lo que queiro es que haga es que entre si sigue=1 sino que no haga nada.
Vale a ver, me he liado... lo que tiene estar a mil cosas a la vez jejeje. scanf tiene un problemilla con las lecturas si el buffer está "sucio". para solucionarlo hay que retocar la cadena que se le pasa a scanf tal que
Con eso creo que debería bastar.
|
|
|
En línea
|
|
|
|
neeeko
Desconectado
Mensajes: 35
|
Vale a ver, me he liado... lo que tiene estar a mil cosas a la vez jejeje. scanf tiene un problemilla con las lecturas si el buffer está "sucio". para solucionarlo hay que retocar la cadena que se le pasa a scanf tal que
Con eso creo que debería bastar. y que cambia al codigo que yo hice ? no enteindo la verdad. mi problema es que entra 1 ves al bucle y nose poruqe
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
si te fijas el scanf tiene un espacio antes del %d... eso hace que el scanf ignore saltos de línea que pueda haber en el buffer de entrada.
Y te entra una vez porque sigue no vale 1, el scanf te está leyendo basura... prueba si no a hacer un printf de "sigue" a ver que valor sale.
|
|
|
En línea
|
|
|
|
neeeko
Desconectado
Mensajes: 35
|
si te fijas el scanf tiene un espacio antes del %d... eso hace que el scanf ignore saltos de línea que pueda haber en el buffer de entrada.
Y te entra una vez porque sigue no vale 1, el scanf te está leyendo basura... prueba si no a hacer un printf de "sigue" a ver que valor sale.
Pero no entiendo porque entra si declare :
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
porque es un bucle do-while... en un bucle do-while el contenido del bucle se ejecuta siempre al menos una vez. La razón es que la condición se evalúa al final de cada repetición del bucle. Si quieres que la condición se ejecute al principio de cada iteración usa un bucle while a secas. while(sigue==1) { //... }
|
|
|
En línea
|
|
|
|
neeeko
Desconectado
Mensajes: 35
|
porque es un bucle do-while... en un bucle do-while el contenido del bucle se ejecuta siempre al menos una vez. La razón es que la condición se evalúa al final de cada repetición del bucle. Si quieres que la condición se ejecute al principio de cada iteración usa un bucle while a secas. while(sigue==1) { //... }
Gracias quedo claro no entendía mucho las estructuras en c. te agradezco mucho.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
ver formularios mientras debugeo
Programación Visual Basic
|
rr4v
|
1
|
1,479
|
25 Abril 2008, 03:08 am
por Ch3ck
|
|
|
descargar mientras juego css
Redes
|
winsor
|
1
|
2,297
|
5 Julio 2010, 09:04 am
por awesome13
|
|
|
Mensaje mientras carga PHP
PHP
|
javirk
|
3
|
7,175
|
11 Mayo 2012, 21:12 pm
por pwnz
|
|
|
Mientras duermes...
Foro Libre
|
@synthesize
|
2
|
1,913
|
31 Octubre 2012, 04:21 am
por flacc
|
|
|
Guardar datos mientras lee .csv
Programación C/C++
|
Mitsu
|
1
|
2,089
|
13 Enero 2013, 22:22 pm
por durasno
|
|