sábado, 8 de diciembre de 2012

Estructuras (structs)

 
Las estructuras en c++ son colecciones de elementos, los cuales pueden ser de diferente tipo, y a diferencia de las uniones, en éstas no se comparte la misma área de memoria para los elementos.

La forma de declarar una estructura es:

struct nombre_estructura{
tipo nombre_elemento1;
tipo nombre_elemento2;
};

Es entonces cuando declaramos una variable del tipo de la estructura,
funcionando el nombre de la estructura como un nuevo tipo de datos, de esta manera, la nueva variable tendrá cada uno de los elementos declarados en ella.
  
nombre_estructura nueva_variable;

Para acceder a cada uno de sus elementos usamos el operador punto (.), seguido del nombre del elemento, de la misma forma que con las uniones. Una estructura puede ser declarada de forma global o local.

Un ejemplo del uso de los structs:
 
/*Un instituto registra los datos de los alumnos que llevan cursos de extension,
el monto que paga cada alumno depende del curso que lleva:
             Curso     Monto(S/.)
             Java      580
             c++       420
             .net      600
Asimismo, de acuerdo al turno en el que se matricula el monto de la matricula
se incrementa en:
              Turno     Incremento(%)
              Mañana        0
              tarde         5
              noche         10
Ademas, al final del curso el alumno debe realizar un pago de S/.25.00 por
derecho de examen. Mostrar el monto final que paga los N alumnos del instituto,
asi como la cantidad de alumnos que llevan los cursos de java, c++ y .NET. */
 
#include <iostream.h>
#include <stdlib.h>
 
struct alumno{
       char nom[40], cur, tur;
       double mont, inc, tot;
};
int i, n;
void ingresar(int &n, alumno a[80]);
void calcularTotal(int n, alumno a[80]);
void calcularCantidad(int n, alumno a[80]);
void imprimir(int n, alumno a[80]);
 
 
int main()
{
 
      alumno a[80];
 
      ingresar(n, a);
      calcularTotal(n, a);
      calcularCantidad(n, a);
      imprimir(n, a);
      system("PAUSE");
      return 0;
}
 
void ingresar(int &n, alumno a[80]){
     cout<<"Ingresar cantidad de alumnos: ";
     cin>>n;
     for(i=0; i<n; i++){
         cout<<"Ingresar nombre: ";
         cin>>a[i].nom;
         cout<<"Ingresar curso: ";
         cin>>a[i].cur;
         cout<<"Ingresar turno: ";
         cin>>a[i].tur;
     }
}
 
void calcularTotal(int n, alumno a[80]){
     for(i=0; i<n; i++)
         switch(a[i].cur){
               case 'J': a[i].mont=580; break;
               case 'C': a[i].mont=420; break;
               case 'N': a[i].mont=600; break;
         }
     for(i=0; i<n; i++)
         switch(a[i].tur){
                case 'M': a[i].inc=0; break;
                case 'T': a[i].inc=0.05*a[i].mont; break;
                case 'N': a[i].inc=0.10*a[i].mont; break;
         }
     for(i=0; i<n; i++)
         a[i].tot=a[i].mont+a[i].inc+25.00;
}
 
void calcularCantidad(int n, alumno a[80]){
     int cj=0, cc=0, cn=0;
     for(i=0; i<n; i++)
         switch(a[i].cur){
               case 'J': cj++;      break;
               case 'C': cc++;      break;
               case 'N': cn++;      break;
         }
     cout<<"La cantidad de alumnos que llevan Java son "<<cj<<endl
         <<"La cantidad de alumnos que llevan C++ son "<<cc<<endl
         <<"La cantidad de alumnos que llevan NET son "<<cn<<endl;
}
 
void imprimir(int n, alumno a[80]){
     for(i=0; i<n; i++)
         cout<<a[i].nom<<"\t"
             <<a[i].cur<<"\t"
             <<a[i].tur<<"\t"
             <<a[i].mont<<"\t"
             <<a[i].inc<<"\t"
             <<a[i].tot<<endl;
 

2 comentarios:

  1. ese programa no corre hijo de puta si vas a subir mierdas q o sirven mejor no subas nada

    ResponderBorrar
  2. Gracias por el programa corre el 100%, no le hagas caso a este Joe Willians, el si es un hijo de puta, lo mas seguro es q no sabe como utilizar los programas segun su sistema operativo...

    ResponderBorrar