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

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con cin.getline
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con cin.getline  (Leído 1,430 veces)
RiCo9297

Desconectado Desconectado

Mensajes: 10


Ver Perfil
Problema con cin.getline
« en: 16 Diciembre 2016, 20:26 pm »

Código
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. const int numCitas = 10;
  5. const int KNOMBRE = 40;
  6. const int KDNI = 9;
  7.  
  8. typedef struct{
  9. int dia, mes, anyo;
  10. }Fecha;
  11.  
  12. typedef struct{
  13. int h, m;
  14. }Hora;
  15.  
  16. typedef struct{
  17. char dni[KDNI];
  18. char nombrePaciente[KNOMBRE];
  19. }Paciente;
  20.  
  21. typedef struct{
  22. Fecha fecha;
  23. Hora hora;
  24. char nombreFisio[KNOMBRE];
  25. int tipoTratamiento;
  26. Paciente paciente;
  27. }Cita;
  28.  
  29. typedef struct{
  30. Cita cita[numCitas];
  31. int numCitas;
  32. int cuantas = 1;
  33. }Citas;
  34.  
  35. void leerFecha(Fecha &f){
  36. do{
  37. cout << "Dia: ";
  38. cin >> f.dia;
  39. }while(f.dia < 1 || f.dia > 31);
  40. do{
  41. cout << "Mes: ";
  42. cin >> f.mes;
  43. }while(f.mes < 1 || f.mes > 12);
  44. do{
  45. cout << "Año: ";
  46. cin >> f.anyo;
  47. }while(f.anyo < 0);
  48. cin.get();
  49. }
  50.  
  51. void imprimirFecha(Fecha f){
  52. cout << "Dia: " << f.dia << endl;
  53. cout << "Mes: " << f.mes << endl;
  54. cout << "Año: " << f.anyo << endl;
  55. }
  56.  
  57. void leerHora(Hora &h){
  58. do{
  59. cout << "Hora: ";
  60. cin >> h.h;
  61. }while(h.h < 0 || h.h > 23);
  62. do{
  63. cout << "Minuto: ";
  64. cin >> h.m;
  65. }while(h.m < 0 || h.m > 59);
  66. cin.get();
  67. }
  68.  
  69. void imprimirHora(Hora h){
  70. cout << "Hora: " << h.h << endl;
  71. cout << "Minuto: " << h.m << endl;
  72. }
  73.  
  74. void leerPaciente(Paciente &p){
  75. cout << "DNI: ";
  76. cin.getline(p.dni, KDNI);
  77. cin.get();
  78. cout << "Nombre: " ;
  79. cin.getline(p.nombrePaciente, KNOMBRE);
  80. cin.get();
  81. }
  82.  
  83. void imprimirPaciente(Paciente p){
  84. cout << "DNI: " << p.dni << endl;
  85. cout << "Nombre: " << p.nombrePaciente << endl;
  86. }
  87.  
  88. void leerCita(Cita &c){
  89. cout << "**** SOLICITUD DE CITA ****" << endl;
  90. cout << "Introduzca fecha: " << endl;
  91. leerFecha(c.fecha);
  92. cout << "Introduzca la hora: " << endl;
  93. leerHora(c.hora);
  94. cout << "Nombre del fisioterapeuta: ";
  95. cin.getline(c.nombreFisio, KNOMBRE);
  96. cout << "Tipo de tratamiento (1.Masaje, 2.Lesion, 3.Rehabilitacion): ";
  97. cin >> c.tipoTratamiento;
  98. cout << "Introduzca los datos del paciente: " << endl;
  99. leerPaciente(c.paciente);
  100. }
  101.  
  102. void imprimirCita(Cita c){
  103. cout << "***** CITA *******" << endl;
  104. cout << "FECHA: " << endl;
  105. imprimirFecha(c.fecha);
  106. cout << "HORA DE LA CITA: " << endl;
  107. imprimirHora(c.hora);
  108. cout << "Nombre del fisioterapeuta: " << c.nombreFisio << endl;
  109. cout << "Tipo de tratatimiento: ";
  110. switch(c.tipoTratamiento){
  111. case 1:
  112. cout << "Masaje " << endl;
  113. break;
  114. case 2:
  115. cout << "Lesion" << endl;
  116. break;
  117. case 3:
  118. cout << "Rehabilitacion" << endl;
  119. break;
  120. }
  121. }
  122.  
  123. void pedirCitas(Citas &cit){
  124. if(cit.cuantas < cit.numCitas){
  125. leerCita(cit.cita[cit.cuantas]);
  126. cit.cuantas++;
  127. }
  128. else{
  129. cout << "No se admiten mas citas" << endl;
  130. }
  131. }
  132.  
  133. void imprimirCitas(Citas cit){
  134. int i;
  135. for(i = 1; i <= cit.cuantas; i++){
  136. imprimirCita(cit.cita[i]);
  137. }
  138. cout << endl;
  139. }
  140.  
  141. int main(){
  142. int opcion;
  143. Citas c;
  144. do{
  145. cout << "********** SERVICIO DE FISIOTERAPIA ************** " << endl;
  146. cout << "Seleccione una opcion del menu: " << endl;
  147. cout << "1. Pedir una cita " << endl;
  148. cout << "2. Anular una cita " << endl;
  149. cout << "3. Mostrar listado de citas " << endl;
  150. cout << "4. Mostrar facturacion de un fisioterapeuta " << endl;
  151. cout << "5. Salir " << endl;
  152. cout << "Opcion: " << endl;
  153. cin >> opcion;
  154. switch(opcion){
  155. case 1:
  156. pedirCitas(c);
  157. break;
  158. case 2:
  159. break;
  160. case 3:
  161. imprimirCitas(c);
  162. break;
  163. case 4:
  164. break;
  165. case 5:
  166. break;
  167. default:
  168. cout << "OPCION INCORRECTA " << endl;
  169. }
  170. }while(opcion != 5);
  171. }

En el modulo leerPaciente hay puesto dos cin.getline, el primero lee un dni que es una cadena de caracteres de tipo paciente(la estructura) y otro que lee el nombre del paciente que es otra cadena de caracteres del mismo tipo, el problema esta en que al introducir el nombre el programa me entra en un bucle, como puedo solucionarlo GRACIASSSS  :-* :-* :-* :-* :-*


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
PROBLEMA con la funcion miembro getline() e ignore()
Programación C/C++
.:BlackCoder:. 9 7,432 Último mensaje 27 Julio 2010, 04:29 am
por leogtz
Problema con el delimitador de getline [SOLUCIONADO]
Programación C/C++
anonimo12121 3 5,126 Último mensaje 1 Abril 2013, 18:13 pm
por anonimo12121
Problema con cin.getline
Programación C/C++
erest0r 8 6,567 Último mensaje 24 Agosto 2013, 03:33 am
por erest0r
Realmente extraño problema con cin.getline
Programación C/C++
Omar_2013 5 2,547 Último mensaje 11 Abril 2014, 05:19 am
por rir3760
PROBLEMA CON getline
Programación C/C++
Realser86 2 2,318 Último mensaje 25 Octubre 2017, 21:33 pm
por Realser86
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines