miércoles, 29 de febrero de 2012

Hola profesora tuve algunos errores del programa al querer grabarlo, lo cual tuve modificar el código por lo que me tarde en subirlo al blog.
La verdad no supe cual era mi error, pero pienso que eran los punteros que los definí mal.
el vídeo de youtube http://www.youtube.com/watch?v=vQtSFH0XCCM&feature=youtube_gdata

Aquí le dejo el nuevo código:


#include <stdio.h>
#include <sys/types.h>
#include <time.h>
#include<stdlib.h>
#include <windows.h>


int numero_random();
int f1(int *);


int main()
{
    int x=0,i,j,t=1,a=0;
    int car[4]={0,0,0,0}, imp=1,ext[4]={1,1,1,1};
    time_t t1,t2, tc1, tc2;
    time(&t1);
    time(&tc1);
   
    while (1){

    time(&t2);
    time(&tc2);
    if (difftime(t2,t1)>=10)
    {
       time(&t1);
       t++;
       imp=1;
       ext[4]=0;
               if (t==5){
                  t=1;
                  }
    }
        //sleep(4000);
    if (difftime(tc2,tc1)>=4)
    {
        time(&tc1);
        a=numero_random(a);
    }
    if(car[t-1]>1&&t==1)
      ext[0]=0;
      if(car[t-1]>1&&t==2)
      ext[1]=0;
      if(car[t-1]>1&&t==3)
      ext[2]=0;
      if(car[t-1]>1&&t==4)
      ext[3]=0;
    if(ext[0]==0&&difftime(t2,t1)>=2)
       {time(&t1);
       printf("\n\n------------ \n\n");
        ext[0]=1;}
    if(ext[1]==0&&difftime(t2,t1)>=2)
       {time(&t1);
       printf("\n\n-------------- \n\n");
        ext[1]=1;}
    if(ext[2]==0&&difftime(t2,t1)>=2)
       {time(&t1);
       printf("\n\n------------------\n\n");
        ext[2]=1;}
    if(ext[3]==0&&difftime(t2,t1)>=2)
       {time(&t1);
       printf("\n\n---------------------\n\n");
        ext[3]=1;}
         if(a==1){
                     printf("aparece un carro de izquierda a derecha\n\n");
                   
                   
                    if(t!=1){
                             ++car[0];
                             printf("el carro frena hasta un cierto punto: DERECHA\n\n");
                           
                             if (car[0]>=2){
                                   printf("frena detras del anterior: DERECHA\n");
                                   //aumenta el limite del carro
                                   f1(&car[0]);
                                   }
                             }
                             a=0;
                    }
         
           if(a==2){
                     printf("aparece un carro de arriba a abajo\n\n");
                   
                   
                    if(t!=2){
                             ++car[1];
                             printf("el carro frena hasta un cierto punto: ABAJO\n\n");
                           
                             if (car[1]>=2){
                                   printf("frena detras del anterior: ABAJO\n");
                                   //aumenta el limite del carro
                                   f1(&car[1]);
                                   }
                             }
                              a=0;
                    }
           if(a==3){
                     printf("aparece un carro de derecha a izquierda\n\n");
                   
                   
                    if(t!=3){
                             ++car[2];
                             printf("el carro frena hasta un cierto punto: IZQUIERDA\n\n");
                           
                             if (car[2]>=2){
                                   printf("frena detras del anterior: IZQUIERDA\n");
                                   //aumenta el limite del carro
                                   f1(&car[2]);
                                   }
                             }
                              a=0;
                    }
           if(a==4){
                     printf("aparece un carro de abajo a arriba\n\n");
                   
                   
                    if(t!=4){
                             ++car[3];
                             printf("el carro frena hasta un cierto punto: ARRIBA\n\n");
                           
                             if (car[3]>=2){
                                   printf("frena detras del anterior: ARRIBA\n");
                                   //aumenta el limite del carro
                                   f1(&car[3]);
                                   }
                             }
                              a=0;
                    }
   if(imp==1)
   {
           if(t==1){
                    printf("el semaforo de la derecha esta en verde\n");
                    if(t==1&&car[0]>=1){
                             printf("el carro avanza\n\n\n\n");
         
                           
                              car[0]=0;
                             }
                    //aumenta una variable para que el carro siga
                   
                    }
         
           else
              printf("el semaforo de la derecha se pone en rojo\n");
         
         
           printf("%d\n\n\n\n",car[0]);
           if(t==2){
                    printf("el semaforo de abajo esta en verde\n");
                    if(t==2&&car[1]>=1){
                             printf("el carro avanza\n\n\n\n");
                           
                              car[1]=0;
                             }
                    }
           else
              printf("el semaforo de abajo se pone en rojo\n");
         
           printf("%d\n\n\n\n",car[1]);
         
         
           if(t==3){
                    printf("el semaforo de la izquierda esta en verde\n");
                    if(t==3&&car[2]>=1){
                             printf("el carro avanza\n\n\n\n");
                       
                              car[2]=0;
                             }
                    }
           else
           printf("el semaforo de la izquierda se pone en rojo\n");
         
           printf("%d\n\n\n\n",car[2]);
           if(t==4){
                    printf("el semaforo de arriba esta en verde\n");
                    if(t==4&&car[3]>=1){
                             printf("el carro avanza\n\n\n\n");
                             
                              car[3]=0;
                             }
                   
                    }
                   
           else
              printf("el semaforo de arriba se pone en rojo\n");
           printf("%d\n\n\n\n",car[3]);
      imp=0;
   }
          }
   
    getchar();
    return 0;
}
int f1(int *r){
        *r++;
        }

int numero_random(){
srand(time(NULL)); //semilla
return (rand()%5); //rellena con numeros entre 0 y 199
}



jueves, 23 de febrero de 2012

Programa del semáforo


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;