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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  No entiendo este error - Ayuda
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: No entiendo este error - Ayuda  (Leído 1,783 veces)
Cero++

Desconectado Desconectado

Mensajes: 52



Ver Perfil WWW
No entiendo este error - Ayuda
« en: 23 Diciembre 2018, 22:31 pm »

Buenas, les adjunto el código, prácticamente todo esta bien, ya no sé si lógicamente pero al compilar por lo menos sí.

Aquí el código:

Código
  1. #include <iostream>
  2. using namespace std;
  3. using namespace std;
  4. struct Fecha{
  5. int dd,mm,aa;
  6. };
  7. /*
  8. Estado civil:
  9. -1"soltero"
  10. 0 "casado"
  11. 1 "viudo"
  12. */
  13. class Persona{
  14. string nom_ape; int DNI, estado_civil; Fecha fecha_nacimiento;
  15. public:
  16. void Cargar_datos(string _nom, int _dni, int _civil, Fecha _d_nacimiento);
  17. int Edad(Fecha _actual){ //retorno la edad;
  18. int aux=_actual.aa-fecha_nacimiento.aa;
  19. return aux;
  20. }
  21. string Ver_nombre(){
  22. return nom_ape;
  23. }
  24. };
  25. void Persona:: Cargar_datos(string _nom, int _dni, int _civil, Fecha _d_nacimiento){
  26. nom_ape=_nom; DNI=_dni; estado_civil=_civil; fecha_nacimiento=_d_nacimiento;
  27. }
  28.  
  29. class Alumno: public Persona{
  30. float promedio; int cantidad_aprovadas;
  31. public:
  32. void Agregar_prom(float _prom){
  33. promedio=_prom;
  34. }
  35. void Materias_apro(int _apro){
  36. cantidad_aprovadas=_apro;
  37. }
  38. float Ver_promedio(){
  39. return promedio;
  40. }
  41. float Merito_academico(){
  42. float aux=promedio*cantidad_aprovadas;
  43. return aux;
  44. }
  45. };
  46.  
  47. class Docente:public Persona{
  48. Fecha ingreso;
  49. public:
  50. void Agregar_fecha_ingreso(Fecha _f){
  51. ingreso=_f;
  52. }
  53. int Antiguedad(Fecha _actual){
  54. int aux=ingreso.aa-_actual.aa;
  55. return aux;
  56. }
  57. };
  58.  
  59. class Curso{
  60. string nombre_curso; Docente D; Alumno *A=nullptr; int size;
  61. public:
  62. Curso(int _i){
  63. if(_i<=50){
  64. size=_i;
  65. A=new Alumno [size];
  66. }else{
  67. cerr<<"Supero el limite maximo de alumnos (50)"<<endl;
  68. exit(1);
  69. }
  70.  
  71. }
  72. void Agregar_docente(Docente _d){
  73. D=_d;
  74. }
  75. void Agregar_alumno(Alumno _a, int _i){
  76. A[_i]=_a;
  77. }
  78. void Nom_d_curso(string _nom){
  79. nombre_curso=_nom;
  80. }
  81. Alumno Mejor_promedio();
  82. };
  83. Alumno Curso::Mejor_promedio(){
  84. Alumno aux=A[0];
  85. for(int i=1;i<size;i++) {
  86. if(aux.Ver_promedio()<A[i].Ver_promedio()){
  87. aux=A[i];
  88. }
  89. }
  90. return aux;
  91. }
  92. int main(int argc, char *argv[]) {
  93. int size; Alumno A; Docente D;
  94. cout<<"Ingrese la cantidad de alumnos en el curso: "; cin>>size;
  95. Curso C(size);
  96. cout<<"Seleccione la opcion para proceder :";
  97. cout<<"1 -> Agregar alumnos"<<endl;
  98. cout<<"2 -> Agregar Docente a cargo"<<endl;
  99. cout<<"Presione cualquier numero para salir del programa"<<endl;
  100. int caso; cin>>caso;
  101. switch(caso){
  102. case 1:
  103. cout<<"Ahora ingrese los datos de los alumnos:"<<endl;
  104. for(int i=0;i<size;i++) {
  105. string nom_ape; int dni,estado_civil,materias_apro; Fecha d_nacimiento;
  106. float promedio;
  107. cout<<"Ingrese el nombre y apellido: "; cin>>nom_ape;
  108. cout<<"Ingrese el DNI: "; cin>>dni;
  109. cout<<"Ingrese el estado civil: "; cin>>estado_civil;
  110. cout<<"Ingrese la fecha de nacimiento :";
  111. cin>>d_nacimiento.dd; cin>>d_nacimiento.mm; cin>>d_nacimiento.aa;
  112. cout<<"Ingrese el promedio del alumno :"; cin>>promedio;
  113. cout<<"Ingrese la cantidad de materias aprovadas: "; cin>>materias_apro;
  114. cout<<"-----------------------------"<<endl;
  115. A.Cargar_datos(nom_ape,dni,estado_civil,d_nacimiento);
  116. A.Materias_apro(materias_apro);
  117. A.Agregar_prom(promedio);
  118. C.Agregar_alumno(A,i);
  119. }
  120. break;
  121. case 2:
  122. cout<<"Ingrese los datos del Docente"<<endl;
  123. string nom_ape; int dni,estado_civil;
  124. Fecha d_nacimiento, ingreso_laboral;
  125. cout<<"Ingrese el nombre y apellido: "; cin>>nom_ape;
  126. cout<<"Ingrese el DNI: "; cin>>dni;
  127. cout<<"Ingrese el estado civil: "; cin>>estado_civil;
  128. cout<<"Ingrese la fecha de nacimiento :";
  129. cin>>d_nacimiento.dd; cin>>d_nacimiento.mm; cin>>d_nacimiento.aa;
  130. cout<<"Ingrese la fecha de ingreso laboral :";
  131. cin>>ingreso_laboral.dd; cin>>ingreso_laboral.mm; cin>>ingreso_laboral.aa;
  132. cout<<"-------------------------------"<<endl;
  133. D.Cargar_datos(nom_ape,dni,estado_civil,d_nacimiento);
  134. D.Agregar_fecha_ingreso(ingreso_laboral);
  135. break;
  136. default: //Me da error...
  137. cout<<"Salio del programa"<<endl;
  138. break;
  139. }
  140. cout<<"El alumno con mejor promedio es: ";
  141. Alumno aux=C.Mejor_promedio();
  142. cout<<aux.Ver_nombre();
  143. return 0;
  144. }

al compilar me da este error:

Código
  1. error: jump to case label [-fpermissive]


« Última modificación: 24 Diciembre 2018, 16:54 pm por Cero++ » En línea

Código:
Ser diligente es lo ÚNICO que importa para lograr el éxito[c/ode]
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: No entiendo este error - Ayuda
« Respuesta #1 en: 23 Diciembre 2018, 23:35 pm »

Sacando string nom_ape del switch me ha funcionado.


En línea

Cero++

Desconectado Desconectado

Mensajes: 52



Ver Perfil WWW
Re: No entiendo este error - Ayuda
« Respuesta #2 en: 23 Diciembre 2018, 23:54 pm »

Sacando string nom_ape del switch me ha funcionado.

Si, extendiendo el error, dice que sacando el nom_ape, funcionaría, pero el tema es, que si lo saco, no cargaría el nombre del Docente jaja
Igual no entiendo que problema le puede ocasionar ese string al programa  :-(
En línea

Código:
Ser diligente es lo ÚNICO que importa para lograr el éxito[c/ode]
CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: No entiendo este error - Ayuda
« Respuesta #3 en: 24 Diciembre 2018, 01:39 am »

Define la(s) variable(s) fuera del switch o.bien
Define un bloque usando {} dentro del case donde vas a usar la(s) variable(s).
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
CalgaryCorpus


Desconectado Desconectado

Mensajes: 323


Ver Perfil WWW
Re: No entiendo este error - Ayuda
« Respuesta #4 en: 24 Diciembre 2018, 01:47 am »

El problema está en que todo el switch es un gran bloque y cada case es un label y por tanto existen labels que al saltar a ellos, hay variables que se saltan sus inicializaciones, lo que no está permitido en C++.
En línea

Aqui mi perfil en LinkedIn, invitame un cafe aqui
Cero++

Desconectado Desconectado

Mensajes: 52



Ver Perfil WWW
Re: No entiendo este error - Ayuda
« Respuesta #5 en: 24 Diciembre 2018, 16:54 pm »

Define la(s) variable(s) fuera del switch o.bien
Define un bloque usando {} dentro del case donde vas a usar la(s) variable(s).


Gracias por la ayuda  ;D
En línea

Código:
Ser diligente es lo ÚNICO que importa para lograr el éxito[c/ode]
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
no entiendo este error en asm con gcc, que puede estar mal?
Programación C/C++
Belial & Grimoire 2 2,981 Último mensaje 17 Mayo 2010, 11:33 am
por Foxy Rider
No entiendo este error al compilar :S
Programación C/C++
Destro- 2 2,468 Último mensaje 10 Noviembre 2011, 04:35 am
por Destro-
No entiendo este error
PHP
Xedrox 4 9,956 Último mensaje 6 Febrero 2012, 21:52 pm
por Xedrox
No entiendo este error de compilación
Programación C/C++
Noob_boy 5 2,294 Último mensaje 8 Enero 2016, 14:03 pm
por Noob_boy
No entiendo que quiere decir este error de compilación!!!!!
Programación C/C++
pablombf 1 1,653 Último mensaje 4 Enero 2018, 14:16 pm
por Becerra
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines