Foros del Web » Programación para mayores de 30 ;) » C/C++ »

duda basica de iteraciones

Estas en el tema de duda basica de iteraciones en el foro de C/C++ en Foros del Web. Buenas noches,tengo el siguiente fragmento de codigo,en el q solo se pide el numde cedula y el nombre,esta dentro de un ciclo while cuya condicion ...
  #1 (permalink)  
Antiguo 08/03/2008, 21:05
 
Fecha de Ingreso: septiembre-2007
Mensajes: 44
Antigüedad: 16 años, 8 meses
Puntos: 0
duda basica de iteraciones

Buenas noches,tengo el siguiente fragmento de codigo,en el q solo se pide el numde cedula y el nombre,esta dentro de un ciclo while cuya condicion es que la cedula sea distinta de 999999. Dentro del cuerpo quiero que pida el nombre y otras instrucciones pero cuando hago la prueba con 999999 en la cedula se ejecuta la impresion y lo que quiero es q se salga del mientras.Me pueden dar una idea.Gracias.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>



/*int getEdadMeses(int edad)
{

}*/
int main()
{
int edad,nota,cedula=0,i=0;
char nombre[60]="";
char salon[4]="";
char sex;

while(cedula !=999999)
{
printf("Introduzca la cedula: ");
scanf("%d",&cedula);
printf("Cedula: %d\n",cedula);
if(cedula!=999999)
{
printf("Introduzca el nombre: \n");
scanf("%s",&nombre[0]);
printf("Nombre: %s\n",nombre);

} //system("pause");



}


system("pause");
return EXIT_SUCCESS;

}
  #2 (permalink)  
Antiguo 09/03/2008, 05:57
 
Fecha de Ingreso: octubre-2006
Mensajes: 11
Antigüedad: 17 años, 6 meses
Puntos: 0
Re: duda basica de iteraciones

Si te he entendido bien lo que quieres es que cuando cedula==99999 no imprima la variable en pantalla y pida el nombre.
Mas o menos la solución es esa, una condición que mire si cedula es o no 99999 (ya tienes una) y dependiendo de si es true o false haga el printf o no.
Por si te sirve de algo hay una sentencia llamada "break;" que rompe los bucles y sale de ellos (ej; while(1){ if(1)break;} // while siempre es true asi que se ejecutaria siempre, pero como el if tambien es siempre true, al ejecutar break sale del while)
  #3 (permalink)  
Antiguo 09/03/2008, 12:31
 
Fecha de Ingreso: septiembre-2007
Mensajes: 44
Antigüedad: 16 años, 8 meses
Puntos: 0
Re: duda basica de iteraciones

Buenas.Efectivamente con el "break" se sale del while pero tengo el mismo problemita.En la ejecucion ,la segunda iteracion se mantiene la primera cedula y no me permite ni ingresar la nueva cedula ni el nombre,se salta hasta la solicitud del apellido.ahi les muestro el codigo y la ejecucion en la consola para que por favor me den una ayuda .Gracias y saludos.


*****************Codigo*************************** ****************
#include <stdio.h>
#include <stdlib.h>
#include <string.h>



/*int getEdadMeses(int edad)
{

}*/
int main()
{
const int centinela =999999;
int edad,nota,cedula=0;
char nombre[60]="";
char apellido[60]="";
char salon[4]="";
char sex;
//printf("Introduzca cedula:\n");
//scanf("%d",&cedula);

while(cedula !=centinela)
{
printf("Introduzca la cedula: ");
scanf("%d",&cedula);
printf("Cedula: %d\n",cedula);
if(cedula==999999)
break;
printf("Cedula: %d\n",cedula);
printf ("Escriba su Nombre: \n");
scanf ("%s",&nombre);
printf("\n\n");
printf ("Escriba su Apellido: ");
scanf ("%s",&apellido);
printf("\n\n");
printf ("Escriba su Edad: ");
scanf ("%d",&edad);
printf("\n\n");
printf ("Escriba su salon: ");
scanf ("%d",&salon);
printf("\n\n");



//system("pause");

}

printf("\n\n\n\t");
printf ("\nE L P R O G R A M A H A T E R M I N A D O\n");
system("pause");
return EXIT_SUCCESS;

}

**************Ejecucion*******************
Introduzca la cedula: 999997
Cedula: 999997
Escriba su Nombre:
cesar


Escriba su Apellido: nor


Escriba su Edad: 28


Escriba su salon: 4n


Introduzca la cedula: Cedula: 999997
Escriba su Nombre:


Escriba su Apellido:
  #4 (permalink)  
Antiguo 09/03/2008, 17:40
 
Fecha de Ingreso: mayo-2006
Ubicación: Venezuela
Mensajes: 33
Antigüedad: 18 años
Puntos: 0
Re: duda basica de iteraciones

errores:

1., Cuando estas en un ciclo, no leas una palabra (char), con scanf, pq esta enbasurado el buffer. Por lo que debes usar gets.
2. Aun asi uses el gets, debes limpiar el buffer, con un fflush(stdin), antes de leer.

Por eso es que te salta, pq tiene caracteres en el buffer.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:31.