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

 

 


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Hacer mientras en C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Hacer mientras en C  (Leído 2,750 veces)
neeeko

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Hacer mientras en C
« en: 25 Septiembre 2013, 15:54 pm »

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.
Código:
#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 Desconectado

Mensajes: 1.248


Ver Perfil
Re: Hacer mientras en C
« Respuesta #1 en: 25 Septiembre 2013, 16:27 pm »

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 Desconectado

Mensajes: 35


Ver Perfil
Re: Hacer mientras en C
« Respuesta #2 en: 25 Septiembre 2013, 16:32 pm »

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 Desconectado

Mensajes: 1.248


Ver Perfil
Re: Hacer mientras en C
« Respuesta #3 en: 25 Septiembre 2013, 16:45 pm »

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

Código
  1. scanf(" %d",&sigue);

Con eso creo que debería bastar.
En línea

neeeko

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: Hacer mientras en C
« Respuesta #4 en: 25 Septiembre 2013, 16:47 pm »

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

Código
  1. scanf(" %d",&sigue);

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 Desconectado

Mensajes: 1.248


Ver Perfil
Re: Hacer mientras en C
« Respuesta #5 en: 25 Septiembre 2013, 16:59 pm »

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 Desconectado

Mensajes: 35


Ver Perfil
Re: Hacer mientras en C
« Respuesta #6 en: 25 Septiembre 2013, 17:03 pm »

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 :
Código:
int sigue=0
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Hacer mientras en C
« Respuesta #7 en: 25 Septiembre 2013, 17:05 pm »

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.

Código
  1. while(sigue==1)
  2. {
  3.  //...
  4. }
En línea

neeeko

Desconectado Desconectado

Mensajes: 35


Ver Perfil
Re: Hacer mientras en C
« Respuesta #8 en: 25 Septiembre 2013, 17:08 pm »

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.

Código
  1. while(sigue==1)
  2. {
  3.  //...
  4. }


Gracias quedo claro no entendía mucho las estructuras en c. te agradezco mucho.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ver formularios mientras debugeo
Programación Visual Basic
rr4v 1 1,314 Último mensaje 25 Abril 2008, 03:08 am
por Ch3ck
descargar mientras juego css
Redes
winsor 1 2,088 Último mensaje 5 Julio 2010, 09:04 am
por awesome13
Mensaje mientras carga PHP
PHP
javirk 3 6,964 Último mensaje 11 Mayo 2012, 21:12 pm
por pwnz
Mientras duermes...
Foro Libre
@synthesize 2 1,700 Último mensaje 31 Octubre 2012, 04:21 am
por flacc
Guardar datos mientras lee .csv
Programación C/C++
Mitsu 1 1,862 Último mensaje 13 Enero 2013, 22:22 pm
por durasno
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines