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

Eliminar datos de un arreglo en C++

Estas en el tema de Eliminar datos de un arreglo en C++ en el foro de C/C++ en Foros del Web. Hola, tengo este código que me permite capturar información: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código C++: Ver original #include <iostream> #include <stdio.h> #include <stdlib.h>   using namespace std ...
  #1 (permalink)  
Antiguo 30/10/2013, 19:02
 
Fecha de Ingreso: septiembre-2013
Mensajes: 8
Antigüedad: 10 años, 7 meses
Puntos: 0
Eliminar datos de un arreglo en C++

Hola, tengo este código que me permite capturar información:

Código C++:
Ver original
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. using namespace std;
  6.  
  7. class Empleados
  8. {
  9. public:
  10.     int codigoempleado;
  11.     char nombreempleado [20];
  12.     char rfc [12];
  13.     char fechaingreso[12];
  14.     char cargo[15];
  15.  
  16. public:
  17.     void Capturar();
  18.     void Modificar(int buscarcodigo);
  19.     void Revisar();
  20.     int Buscar(int buscarcodigo);
  21.     void Eliminar();
  22. }emple [10];
  23.  
  24. void Empleados::Capturar()
  25. {
  26.     cout<<"\nCapturar Empleado \n\n";
  27.     cout<<"Codigo de Empleado: ";
  28.     cin>> codigoempleado;
  29.     cin.ignore(100,'\n');
  30.     cout<<"Nombre de empleado: ";
  31.     cin.getline(nombreempleado,20,'\n');
  32.     cout<<"RFC: ";
  33.     cin.getline(rfc,12,'\n');
  34.     cout<<"Fecha de Ingreso: ";
  35.     cin.getline(fechaingreso,12,'\n');
  36.     cout<<"Cargo: ";
  37.     cin.getline(cargo,15,'\n');
  38.     cout<<"----------------------------------------\n";
  39. }
  40.  
  41. void Empleados::Modificar(int buscarcodigo)
  42. {
  43.     int opc;
  44.     if (buscarcodigo==codigoempleado)
  45.     {
  46.         do
  47.         {
  48.             cout << "\n";
  49.             Revisar();
  50.             cout <<" \nSelecciona el dato a modificar o pulsa 6 para regresar: ";
  51.             cin >> opc;
  52.             switch(opc)
  53.             {
  54.             case 1:
  55.                 cout << " \nNuevo codigo de Empleado: ";
  56.                 cin>> codigoempleado;
  57.                 cin.ignore(100,'\n');
  58.                 break;
  59.             case 2:
  60.                 cout << "\nNuevo nombre de empleado: ";
  61.                 getchar();
  62.                 cin.getline(nombreempleado,20,'\n');
  63.                 break;
  64.             case 3:
  65.                 cout << "\nNuevo RFC: ";
  66.                 getchar();
  67.                 cin.getline(rfc,12,'\n');
  68.                 break;
  69.             case 4:
  70.                 cout << "\nNueva fecha de ingreso: ";
  71.                 getchar();
  72.                 cin.getline(fechaingreso,12,'\n');
  73.                 break;
  74.             case 5:
  75.                 cout << "\nNuevo cargo: ";
  76.                 getchar();
  77.                 cin.getline(cargo,15,'\n');
  78.                 break;
  79.             case 6:
  80.                 ;
  81.                 break;
  82.             default:
  83.                 getchar();
  84.                 cout<< "\nOpcion no valida\n";
  85.                 printf("\nPresiona entrar para continuar...");
  86.                 getchar();
  87.             }
  88.             system("cls");
  89.         }
  90.         while(opc!=6);
  91.     }
  92.     else
  93.     {
  94.         ;
  95.     }
  96. }
  97.  
  98. void Empleados::Revisar()
  99. {
  100.     cout<<"1. Codigo de Empleado: " << codigoempleado << endl;
  101.     cout<<"2. Nombre de Empleado: " << nombreempleado << endl;
  102.     cout<<"3. RFC: " << rfc << endl;
  103.     cout<<"4. Fecha de Ingreso: " << fechaingreso << endl;
  104.     cout<<"5. Cargo: " << cargo << endl;
  105.     cout<<"----------------------------------------\n";
  106. }
  107.  
  108. int  Empleados::Buscar(int buscarcodigo)
  109. {
  110.     int afirmacion;
  111.     if (buscarcodigo==codigoempleado)
  112.     {
  113.         afirmacion=1;
  114.         cout << "\n";
  115.         Revisar();
  116.     }
  117.     else
  118.     {
  119.         afirmacion=0;
  120.     }
  121.     return afirmacion;
  122.  
  123. }
  124.  
  125. void Empleados::Eliminar()
  126. {
  127.     cout<< ("\nMuy pronto...\n");
  128. }
  129.  
  130. int main()
  131. {
  132.     int opc,buscarcodigo,posicion,auxiliar,buscador;
  133.     posicion=0;
  134.     do
  135.     {
  136.         cout<< "\nEmpleados\n\n";
  137.         cout<< "1. Capturar\n";
  138.         cout<< "2. Modificar\n";
  139.         cout<< "3. Revisar\n";
  140.         cout<< "4. Buscar\n";
  141.         cout<< "5. Eliminar\n";
  142.         cout<< "6. Salir\n";
  143.         cout<< "\nSelecciona opcion: ";
  144.         cin>> opc;
  145.  
  146.         switch(opc)
  147.         {
  148.         case 1:
  149.             emple[posicion].Capturar();
  150.             posicion++;
  151.             cout << "\nPresiona entrar para continuar...";
  152.             getchar();
  153.             break;
  154.         case 2:
  155.             system("cls");
  156.             cout << "\nModificar Empleado\n\n";
  157.             cout <<"Ingrese el codigo de empleado: ";
  158.             cin >> buscarcodigo;
  159.             for(auxiliar=0; auxiliar<posicion; auxiliar++)
  160.             {
  161.                 emple[auxiliar].Modificar(buscarcodigo);
  162.             }
  163.             getchar();
  164.             break;
  165.         case 3:
  166.             system("cls");
  167.             cout<< "\nRevisar Empleados\n\n";
  168.             for(auxiliar=0; auxiliar<posicion; auxiliar++)
  169.             {
  170.                 emple[auxiliar].Revisar();
  171.             }
  172.             getchar();
  173.             cout << "\nPresiona entrar para continuar...";
  174.             getchar();
  175.             break;
  176.         case 4:
  177.             cout << "\nBuscar Empleado\n\n";
  178.             cout<< "Ingresa el codigo de empleado: ";
  179.             cin>> buscarcodigo;
  180.             for(auxiliar=0; auxiliar<posicion; auxiliar++)
  181.             {
  182.                 buscador=emple[auxiliar].Buscar(buscarcodigo);
  183.                 if(buscador==1)
  184.                 {
  185.                     break;
  186.                 }
  187.             }
  188.             if (buscador==0)
  189.             {
  190.                 cout << "\nEl empleado no existe"<<endl;
  191.             }
  192.             getchar();
  193.             cout << "\nPresiona entrar para continuar...";
  194.             getchar();
  195.             break;
  196.         case 5:
  197.             emple[auxiliar].Eliminar();
  198.             getchar();
  199.             cout << "\nPresiona entrar para continuar...";
  200.             getchar();
  201.             break;
  202.         case 6:
  203.             cout<< "\nSaliste exitosamente\n";
  204.             break;
  205.         default:
  206.             cout<<"\nOpcion no valida\n";
  207.             getchar();
  208.             cout << "\nPresiona entrar para continuar...";
  209.             getchar();
  210.             break;
  211.         }
  212.         system("cls");
  213.     }
  214.     while(opc!=6);
  215. }

Es un arreglo de 10, que me permite capturar datos. Hasta ahora todo funciona, ya sea buscar o modificar, excepto la funcion de eliminar. ¿Alguien sabe como hacerle para que el programa me permita eliminar datos ya ingresados?
  #2 (permalink)  
Antiguo 30/10/2013, 19:23
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: Eliminar datos de un arreglo en C++

Si querés sacar una instancia de Empleados del array emple, vas a tener que implementar la función Eliminar fuera de la clase. Además, si fuera C yo crearía un array sin un tamaño definido e iría reservando la memoria suficiente durante la ejecución (calloc y realloc) y luego, al no necesitarla más, librerala (free). Por último, si usas C++, por qué tus cadenas son arrays de caracteres en lugar de usar la clase string?

Saludos y suerte!

Etiquetas: arreglo, funcion, int, nombre, programa
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 02:07.