Estudiante Universidad de Guayaquil Ingeniería en Sistemas Dirigente estudiantil #OasisSiempreOasis "Compartir es aprender, es mejorar como sociedad"

viernes, 6 de julio de 2018

Array de struct C++


El manejo de arrays se vuelve una tarea muy sencilla cuando puedes utilizar lógica de objetos.
Un pequeño ejemplo que tuve que hacer para salvar la vida de una amiga.

Comparto código, compilado en "Dev-C++" y una parte del requerimiento.

#include <iostream>
#include <string>

#define tam 14
void menu(); 
float calcular(int metros,int costo_metro);
using namespace std;
 
int main()
{
    struct datosPersona
    { 
     int numero;
        string nombre;
        int cedula;
        int  metros ;
        float pago;
    };
        struct cuota
    { 
     int numero;
        string estado;
        float pago;
    };
    
    int op,met,ops;
    bool salida,salidas,salid;
    int costo;
    
    costo=1;
 int depar;
     datosPersona *persona = new datosPersona[tam];
    
    do{
     menu();
         cout << "Ingrese su opcion: " << endl;
      cin >> op;
      salida = true;
      salid = true;
      salidas = true;
   switch(op)
      {
       case 1:
        {
         do{
          cout << "Ingrese el numero de Departamentos que desea Ingresar (max: 14) " << endl;
          cin>>depar;
          if(depar>0&&depar<=tam)
          {
           salid= false;
       }
      }while(salid );
         
         for (int i=0; i<depar; i++)
         { 
          persona[i].numero=i;
               cout << "Dime el nombre del propietario " << i << endl;
             cin >> persona[i].nombre;
             cout << "Dime la cedula del propietario " << i << endl;
             cin >> persona[i].cedula;
             do{
                    cout << "Dime los metros cuadrados que tiene tu departamento " << i << endl;
                    cout << "1.- Departameto  115" << endl;
                    cout << "2.- Penthouse   325" << endl;
                    cin >> op;
                    if (op==1||op==2)
                    {
        salida=false;
       }
                    }while(salida);
              switch(op)
        {
         case 1:
          {
          persona[i].metros = 115; 
          
           break;
          }
            case 2:
             {
             persona[i].metros = 325;
          
              break;
          }
         
        }   
         }
         
         break;
     }
     
       case 2:
        { 
         cout << "\t Junta de Condominios de ciudadela "<< endl;
         cout << "Num\tPropietario\t Cedula \tMetros\tPagos"<< endl;
         
         for (int i=0; i<depar; i++)
         {
          persona[i].pago =  calcular(persona[i].metros,costo);
             cout<<"|"<< persona[i].numero << "|\t"<< persona[i].nombre <<"|\t\t"<< persona[i].cedula<<"|\t\t"<< persona[i].metros<<"|\t"<< persona[i].pago<<endl;
      }
         
       
         //float calcular(int metros,int costo_metro)
         break;
     }
     
       case 4:
        {
         cout << "\t Junta de Condominios de ciudadela "<< endl;
         cout << "Num\tPropietario\t Cedula \tMetros\tPagos"<< endl;
         int total;
         total=0;
         for (int i=0; i<depar; i++)
         {
          persona[i].pago =  calcular(persona[i].metros,costo);
             cout<<"|"<< persona[i].numero << "|\t"<< persona[i].nombre <<"|\t\t"<< persona[i].cedula<<"|\t\t"<< persona[i].metros<<"|\t"<< persona[i].pago<<endl;
             total = total + persona[i].pago;
      }
      cout << ":::\t TOTAL POR CONDOMINIO :::: "<< endl;
      cout << "total:\t "<< total << endl;
         break;
     }
    case 5:
        { 
         do{
         cout << "El costo actual por metro cuadrado es: "<< costo << endl;
      cout << "1.- Mantener precio "<< endl;
      cout << "2.- Actulizar precio: "<< endl;
      cin >> ops;
      if (ops==1||ops==2)
                    {
        salidas=false;
       }
                    }while(salidas);
              switch(ops)
        {
         case 1:
          {
          
          
           break;
          }
            case 2:
             {
              cout << "2.- Actulizar precio: "<< endl;
              cout << "Ingrese el nuevo costo "<< endl;
           cin >> costo;
           
              break;
          }
         
        }   
         break;
     }
   
   }
      
      
 }while(op!=0);
 
    return 0;
}

void menu()
{
 cout << "\tMENU " << endl;
    cout << "1.- INGRESE DATOS DE DEPARTAMENTOS" << endl;
    cout << "2.- CALCULE COSTO DE PAGO POR DEPARTAMENTO " << endl;
    
    cout << "4.- CALCULE COSTO DE PAGO POR CONDOMINIO " << endl;
    cout << "5.- CONFIGURE COSTO POR METRO CUADRADO " << endl;
    cout << "0.- Salir " << endl;
    
    
 
}

float calcular(int metros,int costo_metro)
{
 return metros*costo_metro;
}


Entregar un archivo .c con las estructuras necesarias y SOLO las funciones solicitadas y el main del ejercicio. 

La junta de Condominios de ciudadela en la ciudad de Guayaquil desea contratarlo para representar la información en un sistema referente al pago de los recibos de alícuotas.  Los recibos se generan mensualmente de manera automática usando la estructura de datos que usted proponga calculando el monto y generando el estado de cada recibo ( P: pendiente, C: cancelado). El monto de alícuotas recaudadas totales por condominio es conocido mensualmente, el valor de la alícuota es calculado en función a los metros cuadrados ( $1 por metro cuadrado) .
 
El conjunto consta de 2 torres de tres pisos cada una, un penthouse en cada una de ellas en su 4to piso. Cada piso tiene 2 apartamentos ( 1 tipo estudio (E) de 50 mt2, 1 de dos habitaciones con 65 mt2. Los penthouse  constan de 325 mt2.  Cada apartamento o penthouse almacena el nombre del propietario, cédula y los metros cuadrados de propiedad y el monto que paga por mensualmente ( valor que puede variar).
 
Diseñe las estructuras necesarias para este problema.
 
Implemente las siguientes funciones:
 
• Función de ingresar los datos de todos los departamentos
• Función que imprima uno a uno sus departamentos y el costo de su alícuota dependiendo de los mts2 

Share:

0 comentarios:

Publicar un comentario

PENSAMIENTOS

Buscar este blog

Con la tecnología de Blogger.

Datos personales

Fecha Ingles - Español Oracle - ORA-01843

Hace un par de dias hubo un problema en el trabajo debido a un consumo de web service, Nosotros en nuestro proceso de PL-SQL recibimos un x...