Traduccion Java a C++, 5 clases, uso de registros y fechas

Iniciado por DAMIANNN, 18 Enero 2017, 12:14 PM

0 Miembros y 1 Visitante están viendo este tema.

DAMIANNN

Hola!

Tengo un programa hecho en Java en el cual he empleado 5 clases, cómo os vendría traducirlo a C++, emplea ArrayList e instancias de clases claro. Solo el esqueleto, toda la algoritmia la intentaría pasar yo.

Saludos

La clase principal es esta, las demas son como registros con gets y sets (javabeans)

Código (java) [Seleccionar]
////////////////
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;




public class Aparcamiento {



public static void main (String args[])
{

   
///// lista de vehiculos registrados (residentes)
ArrayList registrado = new ArrayList();

//// LO INICIALIZO Y CARGO
registrado.add("O8976");
registrado.add("P7564");
registrado.add("S7534");
registrado.add("P1111");
registrado.add("Z6966");
registrado.add("M1122");
registrado.add("L5897");
registrado.add("T2349");
boolean estaReg = false;


///// ALMACEN PARA INFORMES
ArrayList almacen = new ArrayList();
   

//// declaro un ArrayList de Vehiculos que hacen estancias (otro ArrayList)


ArrayList<EstanciaVehiculo> estanciado = new ArrayList<EstanciaVehiculo>();

       

//////////////////////
/* MODULO PARA INTRODUCIR VEHICULO */
//////////////////////


//// primero cojo un coche y lo estaciono
Vehiculo vehiculo = new Vehiculo();

vehiculo.setMatricula("Z1234A");
vehiculo.setOficial(false);

Estancia estancia = new Estancia();
    estancia.setHoraEntrada("19:00:23");
    estancia.setHoraSalida("00:00:00");
   
    estancia.estaEstacionado=true;
   
    //// e introduzco el vehiculo en el arraylist de los que estan
    EstanciaVehiculo ev = new EstanciaVehiculo();
    ev.estancia = estancia;
           ev.vehiculo = vehiculo;
           
    estanciado.add(ev);

 /////////// otro coche
    vehiculo = new Vehiculo();

vehiculo.setMatricula("M1122");
vehiculo.setOficial(false);

estancia = new Estancia();
    estancia.setHoraEntrada("09:00:23");
    estancia.setHoraSalida("00:00:00");
   
    estancia.estaEstacionado=true;
   
    //// e introduzco el vehiculo en el arraylist de los que estan
    ev = new EstanciaVehiculo();
           ev.estancia = estancia;
           ev.vehiculo = vehiculo;
           
    estanciado.add(ev);

   
   
    //////////////////////
    /* MODULO PARA SACAR VEHICULO */
    //////////////////////
       String matriculaSalida = "Z1234A";
    String horaSalida = "21:12:00";
    estancia.estaEstacionado=true;
       /////// comprobar que esta estacionado (aunque ya lo tiene el booleano)
       boolean encontrado = false;
     
       estancia.horaSalida=horaSalida;
       
       EstanciaVehiculo evbuscado = null;
   
     
        for (int i = 0; i< estanciado.size();i ++)
        {
           evbuscado = estanciado.get(i);
        System.out.println("matricula estanciado::::: " + evbuscado.vehiculo.getMatricula());
       
        if (evbuscado.vehiculo.getMatricula().equals(matriculaSalida))
        {
        System.out.println("ENCONTRADO");
           encontrado = true;
           ///////// ahora vemos si esta registrado
           for (int j = 0; j < registrado.size();j++)
           {
            if (((String)registrado.get(j)).equals(evbuscado.vehiculo.getMatricula()))
            {
                 System.out.println("ESTA REGISTRADO ES OFICIAL O RESIDENTE");
                 estaReg = true;
            }
           }
           ////// lo quitamos
           estanciado.remove(i);
           
           darSalida(evbuscado, estancia, estaReg, almacen);
        }
        }
         


   
  }

 
 
 
 
public static void darSalida(EstanciaVehiculo evbuscado, Estancia estancia, boolean estaReg, ArrayList almacen)
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
float importe = 0;
       

evbuscado.estancia.estaEstacionado = false;
        if (evbuscado.vehiculo.isOficial()) importe = 0;
       
        Date tiempoSalida=null;
       
try {
tiempoSalida = sdf.parse("2017-01-11 "+ estancia.horaSalida);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
        Date tiempoEntrada = null;
try {
tiempoEntrada = sdf.parse("2017-01-11 "+ estancia.getHoraEntrada());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
       
       int minutosEstacionado = tiempoSalida.getMinutes() - tiempoEntrada.getMinutes();
       int horasEstacionado = tiempoSalida.getHours() - tiempoEntrada.getHours();
       
        System.out.println("El Coche " + evbuscado.vehiculo.getMatricula() + " ha permanecido "+ horasEstacionado + " : " + minutosEstacionado +  " minutos.");
       
       
               if (!estaReg)
           {
          importe = horasEstacionado * 60 * evbuscado.estancia.getImporteMinutoNoRes();
          importe = importe + minutosEstacionado* evbuscado.estancia.getImporteMinutoNoRes();
         
          System.out.println(" tiene que pagar " + importe + " al tratarse de un no residente.");
           
           }
               else
               {
       
       
       
       
        if (evbuscado.vehiculo.isOficial())
        {
       
        importe = 0;
        System.out.println(" Su estancia es gratuita ");
       
        }
        else if (evbuscado.vehiculo.isResidente())
        {
          importe = horasEstacionado * 60 * evbuscado.estancia.getImporteMinutoResidente();
          importe = importe + minutosEstacionado* evbuscado.estancia.getImporteMinutoResidente();
          System.out.println(" tiene que pagar " + importe + " al tratarse de un residente.");
        }
       
               }
        almacenGlobal(evbuscado, importe, minutosEstacionado, horasEstacionado, almacen);
       

}

public static void almacenGlobal(EstanciaVehiculo ev, float importe, int minEst, int horEst, ArrayList almacen)
{
EstancVehImporte evi = new EstancVehImporte();

evi.setEv(ev);
evi.setImporte(importe);
evi.setTiempoHoras(horEst);
evi.setTiempoMinutos(minEst);

almacen.add(evi);
}




· Los códigos deben ir en etiquetas GeSHi
>aquí las reglas del foro
-Engel Lex

ivancea96

Las clases las replicas. El ArrayList lo puedes cambiar por un vector.

Las operaciones con tiempos y fechas, puedes usar funciones de la librería ctime. Échale un ojo a time y strftime. En sus respectivas páginas en esa web tienes ejemplos.

Para todo lo demás, si tienes alguna duda en alguna conversión, pregunta por aquí.