martes, 4 de diciembre de 2012

Resolviendo Guias de POO en C++

Se desea crear un ARRAY de objetos de los datos de los estudiantes de un colegio. La clase estudiante tendra los atributos:

  • Nombre
  • Codigo
  • Sexo
  • Edad
  • Curso
  • Notas de las asignaturas del curso anterior

    Escribir un programa que cree un arreglo de objetos para manejar 10 estudiantes, lea y escriba en este ARRAY, así como las opciones ordenar por orden alfabético de nombres, calcular la media de cada alumno.

    Aqui el codigo:




    #include <iostream.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    
    class estudiante 
    {
        char nombre[25];
        int codigo;
        char sexo;
        int edad;
        char curso[25];
        int notas[4]; //Suponiendo que el estudiante curso 4 materias el "semestre" anterior 
    
     public:   
        estudiante()
        {
            for(int i=0;i<25;i++)
            {
             nombre[i]=NULL;
             curso[i]=NULL;
            }
            
            edad=0; 
            codigo=0;     
        }
    void insertar(estudiante vector[10])
       {
        int buscar=0, edad=0, codigo, nota;
        char nombre[25], sexo, curso[25];
        
        buscar=buscar_posicion(vector);
        if(buscar<99)
        {
         cout<<"Inserte los datos del estudiante"<<endl;
         cout<<"Nombre"<<endl;
         cin>>nombre;
         cout<<"Edad"<<endl;
         cin>>edad;
         cout<<"SexO"<<endl;
         cin>>sexo;
         cout<<"Curso"<<endl;
         cin>>curso;
         cout<<"Notas del curso anterior"<<endl;
                      for(int i=0;i<4;i++)
                      {
                       cout<<"Inserte la nota "<<i+1<<endl;
                       cin>>nota;
                       vector[buscar].notas[i]=nota;        
                      }
         if(buscar==0)
         {
          vector[buscar].codigo=1;             
         }
         else
         {
          vector[buscar].codigo=vector[buscar-1].codigo+1;;   
         }
         
         strcpy(vector[buscar].nombre,nombre);
         strcpy(vector[buscar].curso,curso);
         vector[buscar].sexo=sexo;
         vector[buscar].edad=edad;
        }
        else
        {
         cout<<"Registro FULL";
         getch();    
        }
             
            
            
       }
      
       int buscar_posicion(estudiante *vector)
       {
        for(int i=0;i<10;i++)
        {
         if(vector[i].codigo==0)
         {
          return i;                   
         }
         else if(i==10)
         {
          return 99;    
         }
                 
        }    
           
       }
       
      void mostrar(estudiante* vector)
      {
        for(int i=0;i<10;i++)
        {
         if(vector[i].edad>0)
         {
             cout<<endl;                
             cout<<"Codigo: "<<vector[i].codigo<<endl;
             cout<<vector[i].nombre<<endl;
             cout<<vector[i].edad<<endl;
             cout<<vector[i].curso<<endl;
             cout<<vector[i].sexo<<endl;
             cout<<"Notas:";
               for(int j=0;j<4;j++)
                {
                  cout<<" "<<vector[i].notas[j]<<" ";        
               }
         }
         }  
         getch();  
      }
       
       estudiante buscar(int codigo);
    
       void ordenar_alfabetico(estudiante vector[10])
       {//ordenamiento de mayor a menor
            char aux[25];
            int temp=0;
            
            for(int i=0; i<9; i++)
            {
             for(int j=i+1; j<10; j++)
             {
              temp=strcmp(vector[i].nombre, vector[j].nombre);
              if (temp<0)
              {
              strcpy(aux, vector[i].nombre);
              strcpy(vector[i].nombre,vector[j].nombre);
              strcpy(vector[j].nombre, aux);
              }
             }
            }
       }
          
            
       void calcular_media(estudiante* vector)
       {
        int acumulador=0;
        for(int i=0; i<10; i++)
           {
                if(vector[i].codigo>0)
                {
                     for(int j=0; j<4; j++)
                     {
            
                       acumulador=acumulador+vector[i].notas[j];
                     }
                     
                     cout<<"Nombre: "<<vector[i].nombre<<" Promedio: "<<acumulador/4<<endl;
                }
            }     
          getch();  
       }
       void ordenar_curso(); 
    
    };
    
    int main()
    {
     int num=0, resp=0;
     estudiante vector[10],a;
    
       do
       {
                  system("cls");
              cout<<"\n\n 1.  Insertar Estudiantes.. \n";
              cout<<" 2.  Mostrar Estudiantes.. \n";
              cout<<" 3.  Ordenar Alfabeticamente.. \n";
              cout<<" 4.  Calcular Medias.. \n";
              cout<<"\n\n          -1 para salir \n";
                      //num=resp=0;  
                      cin>>resp;
         switch(resp)
         {
              case 1:  a.insertar(vector);
                       break;
              case 2: a.mostrar(vector);
                      break;
              case 3: a.ordenar_alfabetico(vector);
                      break;
              case 4: a.calcular_media(vector);
                      break;                  
         }
    
    }while(resp!=-1);
     
    return 0;
    }
    
    
    

    0 comentarios:

    Publicar un comentario