ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Sarsistema


Enviado por   •  21 de Abril de 2017  •  Tarea  •  2.616 Palabras (11 Páginas)  •  175 Visitas

Página 1 de 11

TÍTULO:         

Proyecto cajero

  1. OBJETIVO:

Se requiere simular el proceso de cobro de productos de un supermercado; es decir, los clientes van con un carro lleno de productos y un cajero inicia el proceso de cobro de los productos, registrándolos uno a uno por el escáner de la caja registradora.

  1. DESARROLLO:

 El primer programa debe ser dinámico con la capacidad de atender a dos clientes y una vez ejecutado debe mostrar por ejemplo la siguiente información:

El Cajero 1 COMIENZA A PROCESAR LA COMPRA DEL Cliente 1 EN EL TIEMPO: 0seg

Procesado el producto 1 ->Tiempo: 2seg

Procesado el producto 2 ->Tiempo: 4seg

Procesado el producto 3 ->Tiempo: 5seg

Procesado el producto 4 ->Tiempo: 10seg

Procesado el producto 5 ->Tiempo: 12seg

Procesado el producto 6 ->Tiempo: 15seg

El Cajero 1 HA TERMINADO DE ATENDER al Cliente 1 EN EL TIEMPO: 15seg

El Cajero 1 COMIENZA A PROCESAR LA COMPRA DEL Cliente 2 EN EL TIEMPO: 15seg

Procesado el producto 1 ->Tiempo: 16seg

Procesado el producto 2 ->Tiempo: 19seg

Procesado el producto 3 ->Tiempo: 24seg

Procesado el producto 4 ->Tiempo: 25seg

Procesado el producto 5 ->Tiempo: 26seg

El Cajero 1 HA TERMINADO DE ATENDER al Cliente 2 EN EL TIEMPO: 26seg

Mediante una arreglo donde arreglo donde vamos almacenar los tiempos de los clientes

 

int Cliente1[tiempo1]={2,2,1,5,2,3};

  int Cliente2[tiempo2]={1,3,5,1,1};

En un proceso fork() tenemos una condición si =-1 no podrá comenzar el cajero caso contrario si es =0 podrá iniciar las compras el cliente con sus respectivo tiempo

        

        if(proceso==-1){

                printf("fallo en el fork\n");

                return 1;

        }else if(proceso==0){

                printf("\nEl Cajero 1 comienza a procesar la compra del Cliente 1 en el TIEMPO:%d (seg) \n\n", j);

Para el tiempo  dentro de una condición para poder acumular el tiempo y cuando termine poder visualizar el tiempo total de los productos

for(i; i

                        j+=Cliente1[i];

                        printf ("Procesando el PRODUCTO [%i] ->TIEMPO: %i (seg) \n", i+1, j);

                    }

                        printf(" \nEl Cajero 1 ha terminado de procesar Cliente 1  en el  TIEMPO:%i (seg) \n", j);

                        printf("\nEl Cajero 1 comienza a procesar la compra del Cliente 2 en el TIEMPO:%d (seg) \n\n", j);

Una vez teniendo el tiempo total del cliente1para seguir acumulando el tiempo para el cliente 2

En una condición for caso contrario el tiempo seria desde 0 y lo que queremos es saber cuánto se demoraron los dos clientes en el cajero

                for(tiempototal; tiempototal

                        j+=Cliente2[tiempototal];

                        printf ("Procesando el PRODUCTO [%i] ->TIEMPO: %i (seg) \n", tiempototal+1, j);

                    }

                    printf(" \nEl Cajero 1 ha terminado de procesar Cliente 2 EN EL TIEMPO: %i(seg)\n", j);

                return 0;

        }

}

Código completo

#define tiempo1 6

#define tiempo2 5

int i=0;

int j=0;

int tiempototal=0;

int main(){

  int Cliente1[tiempo1]={2,2,1,5,2,3};

  int Cliente2[tiempo2]={1,3,5,1,1};

        pid_t proceso;

        proceso=fork();

        

        if(proceso==-1){

                printf("fallo en el fork\n");

                return 1;

        }else if(proceso==0){

                printf("\nEl Cajero 1 comienza a procesar la compra del Cliente 1 en el TIEMPO:%d (seg) \n\n", j);

                     for(i; i

                        j+=Cliente1[i];

                        printf ("Procesando el PRODUCTO [%i] ->TIEMPO: %i (seg) \n", i+1, j);

                    }

                        printf(" \nEl Cajero 1 ha terminado de procesar Cliene 1  en el  TIEMPO:%i (seg) \n", j);

                        printf("\nEl Cajero 1 comienza a procesar la compra del Cliente 2 en el TIEMPO:%d (seg) \n\n", j);

                for(tiempototal; tiempototal

                        j+=Cliente2[tiempototal];

                        printf ("Procesando el PRODUCTO [%i] ->TIEMPO: %i (seg) \n", tiempototal+1, j);

                    }

                    printf(" \nEl Cajero 1 ha terminado de procesar Cliente 2 EN EL TIEMPO: %i(seg)\n", j);

                return 0;

        }

}

Ahora, con el fin de procesar dos clientes a la vez se agrega un Cajero (es decir se tiene dos hilos o threads) para atender a los dos clientes a la vez y tardar menos tiempo en ejecutarse el programa.

El resultado de esta ejecución con los dos cajeros sería de manera concurrente y tardaría 15 segundos en terminar su ejecución, por ejemplo de la siguiente manera:

El Cajero 1 COMIENZA A PROCESAR LA COMPRA DEL Cliente 1 EN EL TIEMPO: 0seg

El Cajero 2 COMIENZA A PROCESAR LA COMPRA DEL Cliente 2 EN EL TIEMPO: 0seg

...

Descargar como (para miembros actualizados) txt (11 Kb) pdf (165 Kb) docx (400 Kb)
Leer 10 páginas más »
Disponible sólo en Clubensayos.com