Ver Mensaje Individual
  #21 (permalink)  
Antiguo 29/05/2014, 20:51
Avatar de sorfistaweb
sorfistaweb
 
Fecha de Ingreso: febrero-2014
Ubicación: Guatemala
Mensajes: 21
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Problema con arreglos y funciones en C++

Les dejo el código, aun no esta finalizado pero pronto, gracias por sus buenos consejos y ayuda.

Código C++:
Ver original
  1. #include <iostream>
  2. #include <cstdlib>
  3.  
  4. using namespace std;
  5.  
  6. //Variables
  7. int op=0, n=0;
  8. bool fin = false;
  9.  
  10. struct estudiantes{
  11.            
  12.            int carnet;
  13.            char nombre[50];
  14.            char apellido[50];
  15.            int edad;
  16.            
  17.            };
  18.  
  19. //Constantes
  20. #define PAUSA system("pause")
  21. #define LIMPIA_PANTALLA system("cls")
  22.  
  23. //Funciones
  24. void ingresaDatos(estudiantes x[]);
  25. void ordenaDatos(estudiantes x[]);
  26. void muestraDatos(estudiantes x[]);
  27. void grabaArchivoyCierra(estudiantes x[]);
  28. void abrirArchivoylectura(estudiantes x[]);
  29. void buscaDatos(estudiantes x[]);
  30.  
  31. int main(){
  32.    
  33.     estudiantes backup, *preg, *preg2;
  34.     preg = new estudiantes[100];
  35. //    preg2 = new backup[100];
  36.    
  37.     while(op != 7){
  38.              
  39.              LIMPIA_PANTALLA;
  40.              
  41.              cout << "\n\n\n\n\n\n\t\t\tControl de estudiantes" << endl;
  42.              cout << "\n\t\t\t1. Ingresar estudiantes";
  43.              cout << "\n\t\t\t2. Guardar datos en archivo";
  44.              cout << "\n\t\t\t3. Abrir archivo y leer datos";
  45.              cout << "\n\t\t\t4. Lista de estudiantes";
  46.              cout << "\n\t\t\t5. Lista ordenada de estudiantes";
  47.              cout << "\n\t\t\t6. Buscar estudiante por carnet";                                                    
  48.              cout << "\n\t\t\t7. Salir";                                      
  49.              cout << "\n\n\t\t\tEscribe tu opcion: ";
  50.              cin >> op;
  51.              
  52.              switch(op){
  53.                         case 1:{
  54.                              
  55.                              LIMPIA_PANTALLA;
  56.                              cout << "\n\n\t\tCuantos estudiantes vas a ingresar: ";
  57.                              cin >> n;
  58.  
  59.                              ingresaDatos(preg);
  60.                              
  61.                         }
  62.                         break;
  63.                         case 2:{
  64.                              }
  65.                         break;
  66.                         case 3:{
  67.                              
  68.                              }
  69.                         break;
  70.                         case 4:{
  71.                              //Aqui se muestran los datos desordenados
  72.                              LIMPIA_PANTALLA;
  73.                              cout << "\n\n\n\t\t\tListado de estudiantes\n";
  74.                              muestraDatos(preg);                            
  75.                              }
  76.                         break;                                                
  77.                         case 5:{
  78.                             cout << "\n\n\n\t\t\tListado ordenado de estudiantes\n";
  79.                             PAUSA; 
  80.                               }
  81.                         break;
  82.                         case 6:{
  83.                              buscaDatos(preg);
  84.                               }
  85.                         break;
  86.                         case 7:{
  87.                               delete [] preg;
  88.                               op = 7;
  89.                               }
  90.                         break;                                    
  91.                         }                                      
  92.              } //Fin bucle while
  93.    
  94.     }//Fin programa
  95.  
  96. /* Funcion que permite llenar el arreglo
  97. de estructuras con los datos correspondientes */
  98. void ingresaDatos(estudiantes x[]){
  99.  
  100.     for(int i=0; i<n; i++){
  101.            
  102.              int k=0, j=0;
  103.              
  104.              LIMPIA_PANTALLA;
  105.              cout << "\n\n\n\n\n\t\t\tAlumno [" << i+1 << "]" << endl;
  106.              cout << "\n\t\t\tIngresa No. de carnet: ";
  107.              cin >> j;                                                
  108.              //Aqui va la verificacion del carnet                    
  109.              if(i>0){
  110.                     while(fin == false){
  111.                             if(j == x[k].carnet){
  112.                                  cout << "\n\t\t\tNo. de carnet ya existe" << endl;
  113.                                  cout << "\n\t\t\tIngresa No. de carnet: ";
  114.                                  cin >> j;
  115.                                  k=0;
  116.                                  }
  117.                                  else{
  118.                                       k++;      
  119.                                       }
  120.                             if(k==n){
  121.                                      x[i].carnet = j;
  122.                                      fin = true;
  123.                                      }
  124.                             }//Fin while        
  125.                     }
  126.                     else{
  127.                          x[i].carnet = j;
  128.                          }            
  129.    
  130.              cout << "\n\t\t\tNombre del estudiante: ";                        
  131.              cin >> x[i].nombre;
  132.              cout << "\n\t\t\tApellido del estudiante: ";            
  133.              cin >> x[i].apellido;                          
  134.              cout << "\n\t\t\tEdad del estudiante: ";  
  135.              
  136.              fin = false;
  137.              while(fin == false){
  138.                     cin >> x[i].edad;                  
  139.                     if((x[i].edad < 17)||(x[i].edad > 60)){
  140.                             cout << "\n\t\t\tEdad incorrecta.";  
  141.                             cout << "\n\t\t\tEdad del estudiante: ";  
  142.                             }
  143.                             else{
  144.                                 fin = true;
  145.                             }
  146.                    
  147.                    
  148.                     }//fin while
  149.                                            
  150.              
  151.              
  152.              }//Fin for
  153.  
  154.     cout << "\n\n\n\t\t\t";
  155.     PAUSA;    
  156.      
  157.     }
  158.  
  159. //Funcion que muestra datos
  160. void muestraDatos(estudiantes x[]){
  161.  
  162.                 for (int i=0;i<n; i++){      
  163.  
  164.                         cout << "\n\n\t\t\tNo. Carnet:\t" << x[i].carnet;
  165.                         cout << "\n\t\t\tNombre:\t\t" << x[i].nombre << " " << x[i].apellido;
  166.                         cout << "\n\t\t\tEdad:\t\t" << x[i].edad << " anios";  
  167.              
  168.                 }//Fin for
  169.  
  170.         cout << "\n\n\n\t\t\t";
  171.         PAUSA;
  172.        
  173. }
  174.  
  175.      
  176.  
  177. //Nombre de la funcion que busca al estudiante
  178. void buscaDatos(estudiantes x[]){
  179.      
  180.     int buscar;   //variable para ingresar el numero de carnet del estudiate
  181.     int posicion;   //variable para ubicacion de numero de carnet
  182.  
  183.       LIMPIA_PANTALLA; //limpear pantalla
  184.         cout << "\n\n\n\n\n\t\t\tBusqueda de estudiante por carnet";
  185.         cout << "\n\t\t\tIngrese numero de carnet: ";   //mensaje de pantalla
  186.         cin >> buscar;   //sirve para ingresar el numero de carnet del estudiante
  187.  
  188.         for(posicion=0;posicion<n;posicion++)   //ciclo for para llevar la cuenta de la posicion
  189.     {
  190.             if(buscar==x[posicion].carnet)  //Si el numero ingresado es igual a uno de la lista proceder
  191.         {
  192.                  cout << "\n\n\t\t\tNo. carnet:\t" << x[posicion].carnet;
  193.                  cout << "\n\t\t\tNombre:\t\t" << x[posicion].nombre << " " << x[posicion].apellido;            
  194.                  cout << "\n\n\n\t\t\tEl Estudiante fue encontrado exitosamente!";  //mensaje de pantalla
  195.  
  196.             }
  197.             else{
  198.                  cout << "\n\n\t\t\tNo. carnet no existe";
  199.                  }
  200.         }
  201.  
  202.       cout << "\n\n\n\t\t\t";
  203.       PAUSA;       //mantenerlo en pantalla
  204. }