Practica#1.
El programa contiene cuatro semáforos (arriba,abajo,izquierda,derecha) y este inicia con el que esta ubicado en la parte de abajo, en color verde y empieza a cambiar al transcurrir 10 segundos, al transcurrir los 10 segundos por consiguiente los demás semáforos el de la izquierda >arriba > van cambiando a color verde al orden anterior, pero al momento de llegar otro por la parte de atrás de este, esto ocasiona que el semáforo en vez de durar 10 segundas durara 15 segundos.
El programa lo realiza en C+, usando las bibliotecas Time.h, Sdlib.h, y Sys/type.h.
En el programa declare unas funciones para el numero random, f1,f2,f3,f4, la funcion random me permite que los carros salgan alatoriamente de los carriles, los f1...f4, nos dan una variable que nos indica cuantos carros hay en cada carril.
variables dentro del main son x,i,j,a; la variable se usa para aumentar y disminuir la t, la t es la variable que determinar cual sera el semáforo que cambiara a verde y cuales son que se quedaran a rojo.
La variable a es lo que regresa la funcion de random para determinar donde el carro saldrá.
Las variables car1...car4 son las variables que indican al carro detenerse avanzar, y detectar si existe otro carro en el mismo carril.
Las ultimas variables son las t1 y t2 que son las variables del tiempo que nos permite la duración del semáforo.
Código
#include <sys/types.h>
#include <time.h>
#include<stdlib.h>
int numero_random();
int f1(int );
int f2(int );
int f3(int );
int f4(int );
int main()
{
int x=0,i,j,t=1,a=0;
int car1=0,car2=0,car3=0,car4=0;
time_t t1,t2;
while (1){
(void) time(&t1);
for (i=1; i<=300; ++i)
{
for(j=0; j<10007000; j++); /* Un pequeño retardo */
}
(void) time(&t2);
x=(int)t2-t1;
if (x<=11){
t++;
}
if (t==5){
t=t-5;
continue;
}
a=numero_random(a);
//semaforo
//
if(a==1){
printf("aparece un carro de izquierda a derecha\n\n");
++car1;
if(t!=1){
printf("el carro frena hasta un cierto punto: DERECHA\n\n");
if (car1>=2){
printf("frena detras del anterior: DERECHA\n");
//aumenta el limite del carro
f1(&car1);
}
}
}
if(t==1){
printf("el semaforo de la derecha esta en verde\n");
if(t==1&&car1>=1){
printf("el carro avanza\n\n\n\n");
if(car1>=2){
printf("se incrementa el tiempo del semaforo");
for(j=0; j<10007000; j++); /* Un pequeño retardo */
}
car1=0;
}
//aumenta una variable para que el carro siga
}
if(t!=1){
printf("el semaforo de la derecha se pone en rojo\n");
}
printf("%d\n\n\n\n",car1);
if(a==2){
printf("aparece un carro de arriba a abajo\n\n");
car2++;
if(t!=2){
printf("el carro frena hasta un cierto punto: ABAJO\n\n");
if (car2>=2){
printf("frena detras del anterior: ABAJO\n");
//aumenta el limite del carro
f2(&car2);
}
}
}
if(t==2){
printf("el semaforo de abajo esta en verde\n");
if(t==2&&car2>=1){
printf("el carro avanza\n\n\n\n");
if(car2>=2){
printf("se incrementa el tiempo del semaforo");
for(j=0; j<10007000; j++); /* Un pequeño retardo */
}
car2=0;
}
}
if(t!=2)
printf("el semaforo de abajo se pone en rojo\n");
//
a=numero_random(a);
printf("%d\n\n\n\n",car2);
if(a==3){
printf("aparece un carro de derecha a izquierda\n\n");
car3++;
if(t!=3){
printf("el carro frena hasta un cierto punto: IZQUIERDA\n\n");
if (car3>=2){
printf("frena detras del anterior: IZQUIERDA\n");
//aumenta el limite del carro
f3(&car3);
}
}
}
if(t==3){
printf("el semaforo de la izquierda esta en verde\n");
if(t==3&&car3>=1){
printf("el carro avanza\n\n\n\n");
if(car3>=2){
printf("se incrementa el tiempo del semaforo");
for(j=0; j<10007000; j++); /* Un pequeño retardo */
}
car3=0;
}
}
if(t!=3)
printf("el semaforo de la izquierda se pone en rojo\n");
if(a==4){
printf("aparece un carro de abajo a arriba\n\n");
car4++;
if(t!=4){
printf("el carro frena hasta un cierto punto: ARRIBA\n\n");
if (car4>=2){
printf("frena detras del anterior: ARRIBA\n");
//aumenta el limite del carro
f4(&car4);
}
}
}
printf("%d\n\n\n\n",car3);
if(t==4){
printf("el semaforo de arriba esta en verde\n");
if(t==4&&car4>=1){
printf("el carro avanza\n\n\n\n");
if(car4>=2){
printf("se incrementa el tiempo del semaforo");
for(j=0; j<10007000; j++); /* Un pequeño retardo */
}
car4=0;
}
}
if(t!=4)
printf("el semaforo de arriba se pone en rojo\n");
printf("%d\n\n\n\n",car4);
a=numero_random(a);
}
getchar();
return 0;
}
int f1(int r){
r=r++;
}
int f2(int r){
r=r++;
}
int f3(int r){
r=r++;
}
int f4(int r){
r=r++;
}
int numero_random(){
int a;
srand(time(NULL)); //semilla
a=(rand()%6); //rellena con numeros entre 0 y 199
return a;
}
Ok.
ResponderEliminarDiseño -- 10
Codificación -- 11.5
Total: 21.5