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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  ¿Por qué se detiene en el segundo registro?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: ¿Por qué se detiene en el segundo registro?  (Leído 3,207 veces)
Purple rhino

Desconectado Desconectado

Mensajes: 7


Ver Perfil
¿Por qué se detiene en el segundo registro?
« en: 16 Septiembre 2016, 07:31 am »

Buenas noches, estoy haciendo el código para un programa que permita hacer 10 registros  y poder volver al menú cuando así se quiera y de igual forma desde el menú acceder a los datos que ya han sido registrados previamente, el programa funciona bien al ingresar y guardar los datos de los 2 primeros registros, pero a partir de ahí cada que quiero realizar un nuevo registro se guarda siempre como si fuera el segundo y de ahí no pasa, mi duda es ¿Por qué no sigue avanzando en los registros y siempre aparece el 2?

Este es el código, ojalá me puedan ayudar

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. typedef struct {
  5. char NO[28], SE;
  6. int ED, SA;
  7. }paciente;
  8. paciente PAC[10];
  9. main (){
  10. int ME, i, OP, s;
  11. Inicio:
  12. printf("MENU PRINCIPAL\n"),
  13. printf("\n1. Ingresar nuevos datos\n"),
  14. printf("2. Consultar pacientes registrados\n"),
  15. printf("3. Salir\n"),
  16. printf("\nElija la opcion que desea: "),
  17. scanf("%d", &ME);
  18. switch (ME){
  19. case 1:
  20. do{
  21.        system("cls");
  22.        printf("INGRESAR NUEVOS DATOS\n");
  23.        printf("\n%i. Datos del paciente",i+1);
  24. printf("\n");
  25. fflush(stdin);
  26. printf("Nombre y apellido paterno: ");
  27. gets(PAC[i].NO);
  28. fflush(stdin);
  29. printf("Edad: ");
  30. scanf("%d",&PAC[i].ED);
  31. fflush(stdin);
  32. printf("Sexo: ");
  33. scanf("%c",&PAC[i].SE);
  34. fflush(stdin);
  35. printf("Condicion de salud: ");
  36. scanf("%d",&PAC[i].SA);
  37. fflush(stdin);
  38. printf("\nLos datos del paciente han sido ingresados.");
  39. printf("\nDesea regresar al menu?\n1.Regresar al menu / 2.Salir: ");
  40.    scanf("%d", &OP);}
  41.    while(i=0,i<10,i++);
  42.    switch (OP){
  43.     case 1:
  44.     system("cls");
  45.     goto Inicio;
  46.     break;
  47.     case 2:
  48.     system("cls");
  49.            printf("\nUSTED HA SALIDO DE LA BASE DE DATOS DEL HOSPITAL GENERAL.\n");
  50.            system("pause");
  51.            return 0;
  52.            break;}
  53. case 2:
  54. system("cls");
  55. printf("DATOS DE LOS PACIENTES\n");
  56.    for(i=0;i<10;i++){
  57.     printf("\n");
  58.     printf("Paciente%d\n",(i+1));
  59.        printf("Nombre y apellido paterno:%s\n",PAC[i].NO);
  60.        printf("Edad:%d\n",PAC[i].ED);
  61.        printf("Sexo:%c\n",PAC[i].SE);
  62.        printf("Condicion de salud:%d\n",PAC[i].SA);
  63. }
  64.    break;
  65.    case 3:
  66.    system("cls");
  67. printf("\nUSTED HA SALIDO DE LA BASE DE DATOS DEL HOSPITAL GENERAL.");
  68. break;}
  69. }
  70.  


En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: ¿Por qué se detiene en el segundo registro?
« Respuesta #1 en: 16 Septiembre 2016, 13:44 pm »

La condicion de tu do-while esta mal.


Código
  1. do{
  2. // Omitido
  3. printf("\nDesea regresar al menu?\n1.Regresar al menu / 2.Salir: ");
  4.    scanf("%d", &OP);
  5. }  while(i=0,i<10,i++);


Cuando deberia de ser
Código
  1. do{
  2. // Omitido
  3. printf("\nDesea regresar al menu?\n1.Regresar al menu / 2.Salir: ");
  4.    scanf("%d", &OP);
  5. }  while(OP !=2);

Saludos!




En línea

Purple rhino

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: ¿Por qué se detiene en el segundo registro?
« Respuesta #2 en: 17 Septiembre 2016, 01:36 am »

Muchas gracias por responder AlbertBSD, aunque lo que busco es que al elegir ingresar datos se ingresen los de la persona 1, al volver a entrar a la misma opción se registren los de la persona 2 y así sucesivamente hasta llegar a la persona 10 y si en algún momento se decide tener acceso a los datos ya registrados se muestren los que han sido registrados hasta el momento. Todo eso me funciona con la persona 1 y con la persona 2 pero a partir de ahí cada que quiero ingresar un nuevo registro siempre aparece como si fuera la persona 2.
En línea

AlbertoBSD
Programador y
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.705


🏴 Libertad!!!!!


Ver Perfil WWW
Re: ¿Por qué se detiene en el segundo registro?
« Respuesta #3 en: 17 Septiembre 2016, 22:28 pm »

El otro problema que veo es que estas usando la misma variable para iterar en todos los datos.

El "i" se reinicailiza cuando muestras datos y deberias de usar otra variable cuando queras agregar datos nuevos, como por ejemplo tener una variable que siempre guarde el numero del ultimo registro guardado en el arreglo.

Saludos!
En línea

Purple rhino

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: ¿Por qué se detiene en el segundo registro?
« Respuesta #4 en: 18 Septiembre 2016, 09:14 am »

Muchas gracias por tus consejos, la verdad es que soy principiante en esto pero ya estoy entendiendo más al problema con lo que me dices.

Saludos.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Mi servidor se detiene!
PHP
tonder 1 1,956 Último mensaje 3 Abril 2007, 19:52 pm
por Ertai
BackTrack se detiene
Wireless en Linux
Novata_Inquieta 4 3,206 Último mensaje 20 Octubre 2014, 21:32 pm
por Novata_Inquieta
"No se puede agregar o cambiar el registro porque se necesita un registro relaci
.NET (C#, VB.NET, ASP)
Guillito 1 3,295 Último mensaje 16 Abril 2015, 21:03 pm
por fran800m
Exception detiene la ejecucion
.NET (C#, VB.NET, ASP)
d91 0 1,777 Último mensaje 7 Octubre 2015, 14:50 pm
por d91
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines