Mostrando entradas con la etiqueta Semáforo. Mostrar todas las entradas
Mostrando entradas con la etiqueta Semáforo. Mostrar todas las entradas

Semáforo

Este programa sirve para simular un semáforo de dos carriles.

#include <stdio.h>
#include <time.h>
//funcion
int cambiarColor( int );

  main(  )
{
            int tiempoSimulacion, tiempo;
           
            int semaforo1 = 0, semaforo2 = 1;
            bool entraPrimerVez = true;
            time_t comienzo, actual;
//Se introduce el tiempo durante el cual se va a ejecutar la simulacion
//Y tambien el tiempo en el que queremos que cambie el color del semaforo
            printf( "Introduzca el tiempo en segundos en el que se va a realizar la simulacionn" );
            scanf( "%d", &tiempoSimulacion );
            printf( "Introduzca el tiempo en segundos del cambio del color de los semaforosn" );
            scanf( "%d", &tiempo );


            comienzo = time( NULL );

            do
            {
                        actual = time( NULL );
                       
//Entra al cuerpo del if cada que haya transcurrido el tiempo de cambio ingresadopor el usuario
                        if( int( difftime(actual, comienzo) ) % tiempo == 0 && entraPrimerVez )
                        {
                                   entraPrimerVez = false;
                                   semaforo1 = cambiarColor( semaforo1 );
                                   semaforo2 = cambiarColor( semaforo2 );
                                  
                                   if( semaforo1 == 1 )
                                   {
                                               printf( "El semaforo 1 esta en Verde y el semaforo 2 en Rojonn" );
                                   }
                                   else
                                   {
                                               printf( "El semaforo 1 esta en Rojo y el semaforo 2 en Verdenn" );
                                   }
                        }
                        if( int( difftime(actual, comienzo) ) % tiempo > 0 )
                        {
                                   entraPrimerVez = true;
                        }
            }
            while( int( difftime(actual, comienzo) ) < tiempoSimulacion );

            return 0;
}

int cambiarColor( int semaforo )
{
            //Si el valor del semaforo_1 es 1 es porque este semaforo este en verde, lo que indica que este pasa a rojo
            //y el semaforo_2 pasaria a verde, de lo contrario se invertiria el color segun lo explicado anteriormente
            if( semaforo == 1 )
            {
                        semaforo = 0;
            }
            else
            {
                        semaforo = 1;
            }
            return semaforo;

}