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

Programa control de empleados

Estas en el tema de Programa control de empleados en el foro de C/C++ en Foros del Web. Hola!Tengo un pequeño problema, estoy haciendo un trabajo de programación y nos piden dos módulos. • el módulo 1: que permitirá mantener actualizada la información ...
  #1 (permalink)  
Antiguo 03/01/2013, 07:52
 
Fecha de Ingreso: enero-2013
Mensajes: 3
Antigüedad: 11 años, 2 meses
Puntos: 0
Programa control de empleados

Hola!Tengo un pequeño problema, estoy haciendo un trabajo de programación y nos piden dos módulos.
• el módulo 1: que permitirá mantener actualizada la información de los
trabajadores y consultarla.
• el módulo 2: servirá para introducir por teclado cada día laboral, la hora de
entrada y salida al puesto de trabajo.

Además de una serie de funciones por lo que hemos elaborado el programa de la siguiente manera:
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
int const trabajador=50;
int const dias=30;

struct nacimiento{
int dia;
int mes;
int anyo;
};
struct datos {
int id;
string nombre;
string domicilio;
int CP;
char sexo;
nacimiento fecha;
};
void introducir (datos& reg);
bool fecha (datos reg);
int busca_id(datos reg[trabajador], int dni, int inicio, int final);
void imprimirEmpleado (datos reg);
void modificarDatos (datos& reg);
void ordena_sele(datos reg[trabajador], int cont);
void intercambia(int& a, int&b);

int main(void){
int opc=1;
datos empleados[trabajador];
int contador_empleados=1;
int job=0;
char continua;
int principio=1;
while(opc!=0){

cout << "CONTROL DE PRESENCIA" << endl;
cout << "1. Introducir/modificar datos de empleados " << endl;
cout << "2. Horarios de entrada y salida " << endl;
cout << "3. Consultar datos personal " << endl;
cout << "4. Control laboral de personal " << endl;
cout << "0. Salir " << endl;
cout << "Seleccione una opcion: " <<endl;
cin >> opc;
switch(opc){
case 1:
{
while(opc2!=0){
system("cls"); //limpia la pantalla
cout << "MENU DATOS" << endl;
cout << "1. Introducir datos de empleados" << endl;
cout << "2. Modificar datos de empleados" << endl;
cout << "0. Volver a menu principal "<< endl;
cout << "Seleccione una opcion: "<<endl;
cin >> opc2;

switch(opc2){

case 1:
{
cout<<"Introduzca los datos del 1er empleado"<<endl;
introducir (empleados[job]);
cout<<"Si no desea introducir m·s datos pulse N"<<endl;
cin>>continua;
while(job<trabajador && continua!='N')
{ job++;
contador_empleados++;

cout<<endl<<"Introduzca los datos del "<<job+1<<"o empleado"<<endl;
introducir (empleados[job]);
ordena_sele(empleados, contador_empleados);
cout<<"Si no desea introducir mas datos pulse N"<<endl;
cin>>continua;
}
}
break;

case 2:
{
int dni;
int pos;
cout<<"Introduzca DNI del empleado que desee modificar(sin letra)"<<endl;
cin>>dni;

pos = busca_id(empleados,dni, principio, contador_empleados);
if (pos!=-1){
cout<< "Los datos del empleado son:"<<endl;
imprimirEmpleado(empleados[pos]);
modificarDatos(empleados[pos]);
}else{ cout <<"No existe empleado"<<endl;
}
}
break;
case 0:

break;
default:
cout << endl;
cout << " La opcion es incorrecta, vuelva a seleccionar una opcion " << endl;
cout << endl;
break;
}// fin switch
}// fin while
} // fin case 1 general
break;

case 2:
{ int opc3=1;
system("color 0C");
while(opc3!=0){
system("cls"); //limpia la pantalla
cout << "MENU HORARIOS" << endl;
cout << "Si desea introducir el horario de un trabajador pulse 1"<<endl;
cout << "Si desea volver al menu principal pulse 0"<<endl;
cout << "Seleccione una opcion: " <<endl;
cin >> opc3;

switch(opc3){
case 1:

break;
case 0:

break;
default:
cout << endl;
cout << " La opcion es incorrecta, vuelva a seleccionar una opcion " << endl;
cout << endl;
system ("pause");
break;
} //fi del switch
}// fin del while
} // fin case 2 general
break;

case 3:
{
system("color 0D");
char opc4='a';
while(opc4!='0'){
system("cls"); //limpia la pantalla
cout << "CONSULTA DE DATOS" << endl;
cout << "1. Un solo empleado por DNI " << endl;
cout << "*. Todos los empleados (pulse ascerisco) " << endl;
cout << "0. Para volver al menu principal " << endl;
cout << "Seleccione una opcion: " <<endl;
cin >> opc4;
switch(opc4){
case '1' :
// buscar e introducir
break;
case '*':
int job;
for(job=0;job<=contador_empleados-1;job++){// si no relleno todos los trabajadores da error
imprimirEmpleado(empleados[job]);
}
system ("pause");
break;

case '0':
break;

default:
cout << endl;
cout << "La opcion es incorrecta, vuelva a seleccionar una opcion " << endl;
cout << endl;
system ("pause");
break;
}//final while
} //fi del switch
}// fin case 3 general
break;

case 4:
{ int opc5=1;
while(opc5!=0){
system("color 0E");
system("cls"); //limpia la pantalla
cout << "CONSULTA HORARIOS" << endl;
cout << " 1. Consulta un dÌa " << endl;
cout << " 2. Consulta la presencia de un empleado " << endl;
cout << " 0. Volver menu pricipal " << endl;
cout << "Seleccione una opcion: " <<endl;
cin >> opc5;

switch(opc5){
case 1:
//buscar dÌa

break;
case 2:
//buscar dni y mostrar tabla de horarios
break;

case 0:
break;

default:
cout << endl;
cout << " La opcion es incorrecta, vuelva a seleccionar una opcion " << endl;
cout << endl;
system ("pause");
break;
} //fi del switch
}// fin del while
} // fin case 4 general
break;

case 0:
cout<<"Gracias por utilizar el servicio."<<endl;
break;

default:
cout << endl;
cout << " La opcion es incorrecta, vuelva a seleccionar una opcion " << endl;
cout << endl;
system ("pause");
} //fi del switch
}//fin del loop general
system("pause");
} // fin main
void introducir (datos& reg){
string stub; //Para el "ignore"
char stub2; //para la fecha
cout<<endl <<"Introduzca DNI del trabajador (sin letra)" <<endl;
cin >> reg.id;
getline(cin, stub); //Esto es equivalente a cin.ignore()
cout<<endl <<endl <<"Escriba el nombre y apellidos del trabajador "<<endl;
getline(cin, reg.nombre);
cout<<endl <<"Escriba domicilio del trabajador " <<endl;
getline(cin, reg.domicilio);
cout<<endl <<"Escriba codigo postal del trabajador " <<endl;
cin >> reg.CP;
cout<<endl<<"Introduzca fecha nacimiento del trabajador (dd/mm/aaaa)"<< endl;
cin >> reg.fecha.dia;
cin >> stub2 >> reg.fecha.mes;
cin >> stub2 >> reg.fecha.anyo;
while(!fecha(reg)){
cout << "Fecha erronea. Introduzca de nuevo:" << endl;
cin >> reg.fecha.dia;
cin >> stub2 >> reg.fecha.mes;
cin >> stub2 >> reg.fecha.anyo;
}
cout<<endl<<"Intruduzca el sexo del trabajador (m/h)" << endl;
cin>>reg.sexo;
while(reg.sexo!='m' && reg.sexo!='h')
{
cout<<"Letra incorrecta, introduzca m o h"<<endl;
cin>>reg.sexo;
}
}
bool fecha (datos reg){
bool fecha_tra=true;
if((reg.fecha.anyo>2007||reg.fecha.anyo<1947) || reg.fecha.mes>12 ){ //Los trabajadores no pueden tener menos de 16 aÒos
fecha_tra=false;}
else if ((reg.fecha.mes==4||reg.fecha.mes==6||reg.fecha.me s==9||reg.fecha.mes==11) && reg.fecha.dia<=30){
fecha_tra=true;
}else if (reg.fecha.mes==2 && reg.fecha.dia<=28){ //suponemos que los bisiestos no existen
fecha_tra=true;
} else if ((reg.fecha.mes==1||reg.fecha.mes==3||reg.fecha.me s==5||reg.fecha.mes==7||reg.fecha.mes==8||reg.fech a.mes==10||reg.fecha.mes==12) && reg.fecha.dia<=31){
fecha_tra=true;
}else{fecha_tra=false;}
return fecha_tra;
}
int busca_id(datos reg[trabajador], int dni, int inicio, int final){
while(inicio<=final){
int medio=(inicio+final)/2;
if(dni<reg[medio].id){
inicio=medio+1; // buscamos en la segunda mitad de la tabla
}else if (dni>reg[medio].id){
final=medio-1;}
else
return medio;
}
return -1;
}
void modificarDatos (datos& reg){
string stub; //Para el "ignore"
char stub2; //para la fecha
int opc_acc;
while(opc_acc!=0){
system ("clear");
cout << "MODIFICAR"<< endl;
cout << "1. Nombre " << endl;
cout << "2. DirecciÛn " << endl;
cout << "3. Codigo postal" << endl;
cout << "4. Fecha de nacimiento " << endl;
cout << "5. Sexo " << endl;
cout << "6. Eliminar datos trabajador"<<endl;
cout << "0. Volver men˙ anterior" << endl;
cout << "Seleccione una opcion: " <<endl;
cin>>opc_acc;
switch (opc_acc){
case 1:{
cout<<endl <<endl <<"Escriba el nombre y apellidos del trabajador "<<endl;
getline(cin, reg.nombre);
}
break;
case 2:{
cout<<endl <<"Escriba domicilio del trabajador " <<endl;
getline(cin, reg.domicilio);
}
break;
case 3:{
cout<<endl <<"Escriba codigo postal del trabajador " <<endl;
cin >> reg.CP;
}
break;
case 4:{
cout<<endl<<"Introduzca fecha nacimiento del trabajador (dd/mm/aaaa)"<< endl;
cin >> reg.fecha.dia;
cin >> stub2 >> reg.fecha.mes;
cin >> stub2 >> reg.fecha.anyo;
while(!fecha(reg)){
cout << "Fecha erronea. Introduzca de nuevo:" << endl;
cin >> reg.fecha.dia;
cin >> stub2 >> reg.fecha.mes;
cin >> stub2 >> reg.fecha.anyo;
}
}
break;
case 5:{
cout<<endl<<"Intruduzca el sexo del trabajador (m/h)" << endl;
cin>>reg.sexo;
while(reg.sexo!='m' && reg.sexo!='h')
{
cout<<"Letra incorrecta, introduzca m o h"<<endl;
cin>>reg.sexo;
}
}break;
case 6:
// AcciÛn que elimine todo
break;
case 0:
break;
default:
cout<<"Opcion incorrecta vuelva a elegir"<<endl;
system ("pause");
break;
}
}
}
void imprimirEmpleado (datos reg){
cout<<"El empleado con dni "<< reg.id << " tiene los siguientes datos almacenados:"<<endl;
cout<<"Nombre y apellidos: "<< reg.nombre<< endl;
cout<<"Direccion: " << reg.domicilio <<" "<<reg.CP<<endl;
cout<<"Fecha nacimiento: " <<reg.fecha.dia<<"/"<<reg.fecha.mes<<"/"<<reg.fecha.anyo<<endl;
cout << "Sexo: "<< reg.sexo<<endl;
}
void ordena_sele(datos reg[trabajador], int cont){
int i, j, posmin;
for (i=0; i<cont-1; i++) {
posmin=i;
for (j=i+1; j<cont; j++) {
if (reg[posmin].id>reg[j].id) posmin=j;
}
intercambia(reg[i].id,reg[posmin].id);
}
}
void intercambia(int& a, int&b){
int aux;
aux=a; a=b; b=aux;
}

PROBLEMAS:
-La función de ordenación no la realiza correctamente
- La función de búsqueda tampoco.
- Tampoco sabemos como plantear la tupla para el horario y como enlazarla con el DNI de la otra tupla
Muchas gracias!!
  #2 (permalink)  
Antiguo 04/01/2013, 13:04
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 2 meses
Puntos: 35
Respuesta: Programa control de empleados

Te recomiendo que uses la etiqueta HIGHLIGHT de C++ e introduzcas espacios para poder identificar mejor el código. De otra manera se hace casi imposible poder leer y entenderlo.
  #3 (permalink)  
Antiguo 04/01/2013, 14:11
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 2 meses
Puntos: 94
Respuesta: Programa control de empleados

Hola! como ya te dijeron usa la etiqueta... La funcion d ordenamiento(seleccion) no parece tener problemas, seguro el problema viene de otro lado. Me parece que usas una busqueda binaria en busca_id() no?? si es asi va a fallar ya que el arreglo no esta ordenado


Saludos
  #4 (permalink)  
Antiguo 04/01/2013, 16:22
 
Fecha de Ingreso: diciembre-2010
Ubicación: catamarca
Mensajes: 22
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Programa control de empleados

la verdad leer el código, es un parto, a simple vista parece que hay varias variables opc, sin declarar
  #5 (permalink)  
Antiguo 05/01/2013, 10:38
 
Fecha de Ingreso: enero-2013
Mensajes: 3
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Programa control de empleados

Código C++:
Ver original
  1. #include <iostream>
  2. #include <string>
  3. #include <cstdlib>
  4. using namespace std;
  5. int const trabajador=50;
  6. int const dias=30;
  7.  
  8. struct nacimiento{
  9. int dia;
  10. int mes;
  11. int anyo;
  12. };
  13. struct datos {
  14. int id;
  15. string nombre;
  16. string domicilio;
  17. int CP;
  18. char sexo;
  19. nacimiento fecha;
  20. };
  21. void introducir (datos& reg);
  22. bool fecha (datos reg);
  23. int busca_id(datos reg[trabajador], int dni, int inicio, int final);
  24. void imprimirEmpleado (datos reg);
  25. void modificarDatos (datos& reg);
  26. void ordena_sele(datos reg[trabajador], int cont);
  27. void intercambia(int& a, int&b);
  28.  
  29. int main(void){
  30. int opc=1;
  31. datos empleados[trabajador];
  32. int contador_empleados=1;
  33. int job=0;
  34. char continua;
  35. int principio=1;
  36. while(opc!=0){
  37.  
  38. cout << "CONTROL DE PRESENCIA" << endl;
  39. cout << "1. Introducir/modificar datos de empleados " << endl;
  40. cout << "2. Horarios de entrada y salida " << endl;
  41. cout << "3. Consultar datos personal " << endl;
  42. cout << "4. Control laboral de personal " << endl;
  43. cout << "0. Salir " << endl;
  44. cout << "Seleccione una opcion: " <<endl;
  45. cin >> opc;
  46. switch(opc){
  47. case 1:
  48. {
  49. while(opc2!=0){
  50. system("cls"); //limpia la pantalla
  51. cout << "MENU DATOS" << endl;
  52. cout << "1. Introducir datos de empleados" << endl;
  53. cout << "2. Modificar datos de empleados" << endl;
  54. cout << "0. Volver a menu principal "<< endl;
  55. cout << "Seleccione una opcion: "<<endl;
  56. cin >> opc2;
  57.  
  58. switch(opc2){
  59.  
  60. case 1:
  61. {
  62. cout<<"Introduzca los datos del 1er empleado"<<endl;
  63. introducir (empleados[job]);
  64. cout<<"Si no desea introducir m·s datos pulse N"<<endl;
  65. cin>>continua;
  66. while(job<trabajador && continua!='N')
  67. { job++;
  68. contador_empleados++;
  69.  
  70. cout<<endl<<"Introduzca los datos del "<<job+1<<"o empleado"<<endl;
  71. introducir (empleados[job]);
  72. ordena_sele(empleados, contador_empleados);
  73. cout<<"Si no desea introducir mas datos pulse N"<<endl;
  74. cin>>continua;
  75. }
  76. }
  77. break;
  78.  
  79. case 2:
  80. {
  81. int dni;
  82. int pos;
  83. cout<<"Introduzca DNI del empleado que desee modificar(sin letra)"<<endl;
  84. cin>>dni;
  85.  
  86. pos = busca_id(empleados,dni, principio, contador_empleados);
  87. if (pos!=-1){
  88. cout<< "Los datos del empleado son:"<<endl;
  89. imprimirEmpleado(empleados[pos]);
  90. modificarDatos(empleados[pos]);
  91. }else{ cout <<"No existe empleado"<<endl;
  92. }
  93. }
  94. break;
  95. case 0:
  96.  
  97. break;
  98. default:
  99. cout << endl;
  100. cout << " La opcion es incorrecta, vuelva a seleccionar una opcion " << endl;
  101. cout << endl;
  102. break;
  103. }// fin switch
  104. }// fin while
  105. } // fin case 1 general
  106. break;
  107.  
  108. case 2:
  109. { int opc3=1;
  110. system("color 0C");
  111. while(opc3!=0){
  112. system("cls"); //limpia la pantalla
  113. cout << "MENU HORARIOS" << endl;
  114. cout << "Si desea introducir el horario de un trabajador pulse 1"<<endl;
  115. cout << "Si desea volver al menu principal pulse 0"<<endl;
  116. cout << "Seleccione una opcion: " <<endl;
  117. cin >> opc3;
  118.  
  119. switch(opc3){
  120. case 1:
  121.  
  122. break;
  123. case 0:
  124.  
  125. break;
  126. default:
  127. cout << endl;
  128. cout << " La opcion es incorrecta, vuelva a seleccionar una opcion " << endl;
  129. cout << endl;
  130. system ("pause");
  131. break;
  132. } //fi del switch
  133. }// fin del while
  134. } // fin case 2 general
  135. break;
  136.  
  137. case 3:
  138. {
  139. system("color 0D");
  140. char opc4='a';
  141. while(opc4!='0'){
  142. system("cls"); //limpia la pantalla
  143. cout << "CONSULTA DE DATOS" << endl;
  144. cout << "1. Un solo empleado por DNI " << endl;
  145. cout << "*. Todos los empleados (pulse ascerisco) " << endl;
  146. cout << "0. Para volver al menu principal " << endl;
  147. cout << "Seleccione una opcion: " <<endl;
  148. cin >> opc4;
  149. switch(opc4){
  150. case '1' :
  151. // buscar e introducir
  152. break;
  153. case '*':
  154. int job;
  155. for(job=0;job<=contador_empleados-1;job++){// si no relleno todos los trabajadores da error
  156. imprimirEmpleado(empleados[job]);
  157. }
  158. system ("pause");
  159. break;
  160.  
  161. case '0':
  162. break;
  163.  
  164. default:
  165. cout << endl;
  166. cout << "La opcion es incorrecta, vuelva a seleccionar una opcion " << endl;
  167. cout << endl;
  168. system ("pause");
  169. break;
  170. }//final while
  171. } //fi del switch
  172. }// fin case 3 general
  173. break;
  174.  
  175. case 4:
  176. { int opc5=1;
  177. while(opc5!=0){
  178. system("color 0E");
  179. system("cls"); //limpia la pantalla
  180. cout << "CONSULTA HORARIOS" << endl;
  181. cout << " 1. Consulta un dÌa " << endl;
  182. cout << " 2. Consulta la presencia de un empleado " << endl;
  183. cout << " 0. Volver menu pricipal " << endl;
  184. cout << "Seleccione una opcion: " <<endl;
  185. cin >> opc5;
  186.  
  187. switch(opc5){
  188. case 1:
  189. //buscar dÌa
  190.  
  191. break;
  192. case 2:
  193. //buscar dni y mostrar tabla de horarios
  194. break;
  195.  
  196. case 0:
  197. break;
  198.  
  199. default:
  200. cout << endl;
  201. cout << " La opcion es incorrecta, vuelva a seleccionar una opcion " << endl;
  202. cout << endl;
  203. system ("pause");
  204. break;
  205. } //fi del switch
  206. }// fin del while
  207. } // fin case 4 general
  208. break;
  209.  
  210. case 0:
  211. cout<<"Gracias por utilizar el servicio."<<endl;
  212. break;
  213.  
  214. default:
  215. cout << endl;
  216. cout << " La opcion es incorrecta, vuelva a seleccionar una opcion " << endl;
  217. cout << endl;
  218. system ("pause");
  219. } //fi del switch
  220. }//fin del loop general
  221. system("pause");
  222. } // fin main
  223. void introducir (datos& reg){
  224. string stub; //Para el "ignore"
  225. char stub2; //para la fecha
  226. cout<<endl <<"Introduzca DNI del trabajador (sin letra)" <<endl;
  227. cin >> reg.id;
  228. getline(cin, stub); //Esto es equivalente a cin.ignore()
  229. cout<<endl <<endl <<"Escriba el nombre y apellidos del trabajador "<<endl;
  230. getline(cin, reg.nombre);
  231. cout<<endl <<"Escriba domicilio del trabajador " <<endl;
  232. getline(cin, reg.domicilio);
  233. cout<<endl <<"Escriba codigo postal del trabajador " <<endl;
  234. cin >> reg.CP;
  235. cout<<endl<<"Introduzca fecha nacimiento del trabajador (dd/mm/aaaa)"<< endl;
  236. cin >> reg.fecha.dia;
  237. cin >> stub2 >> reg.fecha.mes;
  238. cin >> stub2 >> reg.fecha.anyo;
  239. while(!fecha(reg)){
  240. cout << "Fecha erronea. Introduzca de nuevo:" << endl;
  241. cin >> reg.fecha.dia;
  242. cin >> stub2 >> reg.fecha.mes;
  243. cin >> stub2 >> reg.fecha.anyo;
  244. }
  245. cout<<endl<<"Intruduzca el sexo del trabajador (m/h)" << endl;
  246. cin>>reg.sexo;
  247. while(reg.sexo!='m' && reg.sexo!='h')
  248. {
  249. cout<<"Letra incorrecta, introduzca m o h"<<endl;
  250. cin>>reg.sexo;
  251. }
  252. }
  253. bool fecha (datos reg){
  254. bool fecha_tra=true;
  255. if((reg.fecha.anyo>2007||reg.fecha.anyo<1947) || reg.fecha.mes>12 ){ //Los trabajadores no pueden tener menos de 16 aÒos
  256. fecha_tra=false;}
  257. else if ((reg.fecha.mes==4||reg.fecha.mes==6||reg.fecha.me s==9||reg.fecha.mes==11) && reg.fecha.dia<=30){
  258. fecha_tra=true;
  259. }else if (reg.fecha.mes==2 && reg.fecha.dia<=28){ //suponemos que los bisiestos no existen
  260. fecha_tra=true;
  261. } else if ((reg.fecha.mes==1||reg.fecha.mes==3||reg.fecha.me s==5||reg.fecha.mes==7||reg.fecha.mes==8||reg.fech a.mes==10||reg.fecha.mes==12) && reg.fecha.dia<=31){
  262. fecha_tra=true;
  263. }else{fecha_tra=false;}
  264. return fecha_tra;
  265. }
  266. int busca_id(datos reg[trabajador], int dni, int inicio, int final){
  267. while(inicio<=final){
  268. int medio=(inicio+final)/2;
  269. if(dni<reg[medio].id){
  270. inicio=medio+1; // buscamos en la segunda mitad de la tabla
  271. }else if (dni>reg[medio].id){
  272. final=medio-1;}
  273. else
  274. return medio;
  275. }
  276. return -1;
  277. }
  278. void modificarDatos (datos& reg){
  279. string stub; //Para el "ignore"
  280. char stub2; //para la fecha
  281. int opc_acc;
  282. while(opc_acc!=0){
  283. system ("clear");
  284. cout << "MODIFICAR"<< endl;
  285. cout << "1. Nombre " << endl;
  286. cout << "2. DirecciÛn " << endl;
  287. cout << "3. Codigo postal" << endl;
  288. cout << "4. Fecha de nacimiento " << endl;
  289. cout << "5. Sexo " << endl;
  290. cout << "6. Eliminar datos trabajador"<<endl;
  291. cout << "0. Volver men˙ anterior" << endl;
  292. cout << "Seleccione una opcion: " <<endl;
  293. cin>>opc_acc;
  294. switch (opc_acc){
  295. case 1:{
  296. cout<<endl <<endl <<"Escriba el nombre y apellidos del trabajador "<<endl;
  297. getline(cin, reg.nombre);
  298. }
  299. break;
  300. case 2:{
  301. cout<<endl <<"Escriba domicilio del trabajador " <<endl;
  302. getline(cin, reg.domicilio);
  303. }
  304. break;
  305. case 3:{
  306. cout<<endl <<"Escriba codigo postal del trabajador " <<endl;
  307. cin >> reg.CP;
  308. }
  309. break;
  310. case 4:{
  311. cout<<endl<<"Introduzca fecha nacimiento del trabajador (dd/mm/aaaa)"<< endl;
  312. cin >> reg.fecha.dia;
  313. cin >> stub2 >> reg.fecha.mes;
  314. cin >> stub2 >> reg.fecha.anyo;
  315. while(!fecha(reg)){
  316. cout << "Fecha erronea. Introduzca de nuevo:" << endl;
  317. cin >> reg.fecha.dia;
  318. cin >> stub2 >> reg.fecha.mes;
  319. cin >> stub2 >> reg.fecha.anyo;
  320. }
  321. }
  322. break;
  323. case 5:{
  324. cout<<endl<<"Intruduzca el sexo del trabajador (m/h)" << endl;
  325. cin>>reg.sexo;
  326. while(reg.sexo!='m' && reg.sexo!='h')
  327. {
  328. cout<<"Letra incorrecta, introduzca m o h"<<endl;
  329. cin>>reg.sexo;
  330. }
  331. }break;
  332. case 6:
  333. // AcciÛn que elimine todo
  334. break;
  335. case 0:
  336. break;
  337. default:
  338. cout<<"Opcion incorrecta vuelva a elegir"<<endl;
  339. system ("pause");
  340. break;
  341. }
  342. }
  343. }
  344. void imprimirEmpleado (datos reg){
  345. cout<<"El empleado con dni "<< reg.id << " tiene los siguientes datos almacenados:"<<endl;
  346. cout<<"Nombre y apellidos: "<< reg.nombre<< endl;
  347. cout<<"Direccion: " << reg.domicilio <<" "<<reg.CP<<endl;
  348. cout<<"Fecha nacimiento: " <<reg.fecha.dia<<"/"<<reg.fecha.mes<<"/"<<reg.fecha.anyo<<endl;
  349. cout << "Sexo: "<< reg.sexo<<endl;
  350. }
  351. void ordena_sele(datos reg[trabajador], int cont){
  352. int i, j, posmin;
  353. for (i=0; i<cont-1; i++) {
  354. posmin=i;
  355. for (j=i+1; j<cont; j++) {
  356. if (reg[posmin].id>reg[j].id) posmin=j;
  357. }
  358. intercambia(reg[i].id,reg[posmin].id);
  359. }
  360. }
  361. void intercambia(int& a, int&b){
  362. int aux;
  363. aux=a; a=b; b=aux;
  364. }

espero que así puedan ayudarme.
gracias
  #6 (permalink)  
Antiguo 05/01/2013, 12:59
 
Fecha de Ingreso: diciembre-2010
Ubicación: catamarca
Mensajes: 22
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Programa control de empleados

bueno aca sigo leyendo el code...ahora entiendo porque nunca sale de swich.
revisen el code siguiente y modifiquen el suyo :)
Código:
#include <iostream>
using namespace std;

int main()
{
	int opc=1, opc1=1;
	cout<<"ingrese un numero"<<endl;
	cin>>opc;
	while (opc!=0)
	{
		cout<<"si ingresas 1 te putea, si ingresas dos no, si ingresas cero salis"<<endl;
		cin>>opc1;
		switch (opc1)
		{
		case 1:
			cout<<"anda a cagar :)"<<endl;
			break;
		case 2:
			cout<<"veamos que pasa"<<endl;
			break;
		case 0:
			opc=opc1;
			break;
		default:
		cout << endl;
		cout << " La opcion es incorrecta, vuelva a seleccionar una opcion " << endl;
		cout << endl;
		break;
		}
	}
	cout<<"saliste del maldito bucle :)"<<endl;
	cin.get();
	return 0;
}
  #7 (permalink)  
Antiguo 05/01/2013, 13:07
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 2 meses
Puntos: 35
Respuesta: Programa control de empleados

Parece haber varios errores en el código. Te recomiendo que dejes el log arrojado por el compilador.
Por otro lado, en la función intercambia deduzco que quieres poner el valor de a en b, y de b en a. Al menos en C, para utilizar parámetros por referencia debes usar punteros, y para definirlos se utiliza el asterisco (*). Por lo que:

Código C++:
Ver original
  1. void intercambia(int *a, int *b){
  2.     int *aux;
  3.     aux=a; a=b; b=aux;
  4. }

Y para llamar a la función:

Código C++:
Ver original
  1. intercambia(&a, &b);

  #8 (permalink)  
Antiguo 05/01/2013, 13:43
 
Fecha de Ingreso: enero-2013
Mensajes: 3
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Programa control de empleados

chicos gracias!! me estáis ayudando bastante.
el problema que tenemos es básicamente que nuestra profesora en vez de enseñar nos lía mas, tenemos este trabajo de fin de cuatrimestre de la universidad y por ejemplo no nos a enseñado a utilizar los punteros. estamos haciendo el trabajo a base de buscar como locos... y yo en bachillerato jamas he visto programación. jajjajaj

otra pregunta, como crees que podemos introducir los datos de horario. hacemos una tupla con el DNI y una tabla con los días que a la vez tengan otra tupla para hora de entrada y salida??
  #9 (permalink)  
Antiguo 05/01/2013, 16:17
 
Fecha de Ingreso: diciembre-2011
Ubicación: CABA
Mensajes: 433
Antigüedad: 12 años, 2 meses
Puntos: 94
Respuesta: Programa control de empleados

Hola! si no me equivoco, como camyl1986 esta en C++ esta haciendo bien el swap ya que declara la funcion como:
Código C:
Ver original
  1. void intercambia(int& a, int&b);
agregar esos "&" es equivalente a lo que mostro carbon; solo que tenes un error carbon: lo unico que haces es intercambiar punteros pero no el contenido por lo tanto al volver al main nose produce ningun cambio
Código C:
Ver original
  1. void intercambia(int *a, int *b){
  2.         int aux;
  3.         aux=*a; *a=*b; *b=aux;
  4.     }


Saludos

Etiquetas: c++
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 13:48.