Skip to content

Instantly share code, notes, and snippets.

@RicardoLara
Created April 25, 2016 02:46
Show Gist options
  • Select an option

  • Save RicardoLara/8a3f9cfa0930b9c2ac3d8699ba5e8127 to your computer and use it in GitHub Desktop.

Select an option

Save RicardoLara/8a3f9cfa0930b9c2ac3d8699ba5e8127 to your computer and use it in GitHub Desktop.
Para el ruteo de la pizza
#include<bits/stdc++.h>
using namespace std;
struct nodo{
int TME_h, TME_m;
int t_pedidoh, t_pedidom;
int t_recorrido; //solo mins
};
struct colita{
nodo lugar[10];
int actual;
colita(){
actual = 0;
}
void push(int h_p, int m_p){
lugar[actual].t_pedidoh = h_p;
lugar[actual].t_pedidom = m_p;
int soloMinutos = h_p * 60 + m_p;
soloMinutos += 30;
lugar[actual].TME_h = soloMinutos/60;
lugar[actual].TME_m = soloMinutos - lugar[actual].TME_h * 60;
lugar[actual].t_recorrido = rand() % 20 + 1;
printf("HORA PEDIDO: %.2d:%.2d\n",lugar[actual].t_pedidoh,lugar[actual].t_pedidom);
printf("HORA MAXIMA ENTREGA: %.2d:%.2d\n",lugar[actual].TME_h,lugar[actual].TME_m);
printf("TIEMPO RECORRIDO: %.2d\n",lugar[actual].t_recorrido);
actual++;
}
int size(){ return actual; }
};
int main(){
colita moto;
time_t now = time(0);
tm *ltm = localtime(&now);
cout << "Year: "<< 1900 + ltm->tm_year << endl;
cout << "Month: "<< 1 + ltm->tm_mon<< endl;
cout << "Day: "<< ltm->tm_mday << endl;
cout << "Time: "<< 1 + ltm->tm_hour << ":";
cout << 1 + ltm->tm_min << ":";
cout << 1 + ltm->tm_sec << endl;
int minuto = 1 + ltm->tm_min;
int t_salida;
//Una vez llegue el primer pedido, calculas el tiempo de la sucursal al punto de entrega
//Se guarda en t_salida, y automaticamente el motoneto sale a la hora esperada para llegar a tiempo
if(minuto >= 60) t_salida = 0;
else t_salida = minuto+1;
//Si llegué a este punto es porque YA ME LLEGÓ UN PEDIDO, entonces, lo encolo
printf("Hora de orden: %d\n",1 + ltm->tm_hour);
printf("Minuto de orden: %d\n",minuto);
moto.push(1 + ltm->tm_hour, 1 + ltm->tm_min);
printf("Minuto t_salida: %d\nPicale al enter: ",t_salida);
getchar();
//Este ciclo es para recibir más pedidos, un MAX de los que quepan en la moto
while(true){
now = time(0);
tm *ltm = localtime(&now);
//printf("Minuto actual: %d\n",1 + ltm->tm_min);
//Si me llega otro pedido, lo encolo
//Si llegas al punto donde ya te tienes que ir... Pues te vas
if(1 + ltm->tm_min == t_salida){
printf("Hora de salir");
printf("En la moto hay %d pizzas\n",moto.size());
return 0;
}
}
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment