Ejemplo n.º 1
0
bool DATE_make(DATE_SERIAL *date, VALUE *val)
{
	short year;
	int nday;
	bool timezone;

	if (!date_is_valid(date))
		return TRUE;

	if (date->year == 0)
	{
		nday = 0; /*(-DATE_NDAY_BC - 1);*/
		timezone = FALSE;
	}
	else
	{
		year = date_to_julian_year(date->year);

		nday = year * 365;
		year--;
		nday += (year >>= 2);
		nday -= (year /= 25);
		nday += year >> 2;

		nday += days_in_year[date_is_leap_year(date->year)][(short)date->month] + date->day;

		/*nday -= DATE_NDAY_BC;*/

		timezone = TRUE;
	}

	val->_date.date = nday;
	val->_date.time = ((date->hour * 60) + date->min) * 60 + date->sec;
	if (timezone)
		val->_date.time -= DATE_get_timezone();

	if (val->_date.time < 0)
	{
		val->_date.date--;
		val->_date.time += 86400;
	}
	else if (val->_date.time >= 86400)
	{
		val->_date.date++;
		val->_date.time -= 86400;
	}

	val->_date.time = val->_date.time * 1000 + date->msec;
	val->type = T_DATE;

	return FALSE;
}
Ejemplo n.º 2
0
/**
 * Determines if a given date and time is valid for calendar
 *
 * @param bdate - pointer to a BACNET_DATE structure
 * @param btime - pointer to a BACNET_TIME structure
 *
 * @return true if the date and time are valid
 */
bool datetime_is_valid(
    BACNET_DATE * bdate,
    BACNET_TIME * btime)
{
    bool status = false;        /* return value */

    /* get the number of days in the month, and check for valid month too */
    if (bdate) {
        status = date_is_valid(bdate->year, bdate->month, bdate->day);
        if (status && btime) {
            status =
                time_is_valid(btime->hour, btime->min, btime->sec,
                btime->hundredths);
        } else {
            status = false;
        }
    }

    return status;
}
Ejemplo n.º 3
0
static uint32_t days_since_epoch(
    uint16_t year,
    uint8_t month,
    uint8_t day)
{
    uint32_t days = 0;  /* return value */
    uint16_t years = 0; /* loop counter for years */
    uint8_t months = 0; /* loop counter for months */

    if (date_is_valid(year, month, day)) {
        for (years = 1900; years < year; years++) {
            days += 365;
            if (is_leap_year(years))
                days++;
        }
        for (months = 1; months < month; months++) {
            days += month_days(years, months);
        }
        days += (day - 1);
    }

    return (days);
}
Ejemplo n.º 4
0
Archivo: main.c Proyecto: johan16/c
int main(int argc, const char * argv[])
{
    //arrays de meses
    const char *meses[12] = { "Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Nomviembre", "Diciembre" };
    //instacio a File para abrir archivos como "archivo"
    FILE *archivo,*archivo1,*archivo2;
    //declaro a fila y un iterador
    int fila, i, pos_ini, pos_fin, cantidad_caracteres;
    //guardo la linea con un array de string
    char caracteres[TAMANO_LINEA];
    //guardo la linea con un array de string
    char variable_destino[TAMANO_LINEA];
    //declaro el separador de lineas
    char caracter_buscado = '*';
    
    //Se define el nombre del archivo
    /*FILES EN MAC*//*
    char transacciones[1240]="/Applications/MAMP/htdocs/C/prueba/prueba/TRANSACCIONES.txt";
    char productos[1250] = "/Applications/MAMP/htdocs/C/prueba/prueba/PRODUCTOS.txt";
    char locales[1250] = "/Applications/MAMP/htdocs/C/prueba/prueba/LOCALES.txt";
    */
    /*FILES EN PC*/
    char transacciones[1240]="TRANSACCIONES.txt";
    char productos[1250] = "PRODUCTOS.txt";
    char locales[1250] = "LOCALES.txt";
    
    // Permite abrir archivo.
    archivo = fopen(transacciones,"r");
    archivo1 = fopen(productos,"r");
    archivo2 = fopen(locales,"r");
    
    // Si el archivo no se encuentra o se esta dañado, no se puede leer.
    if (archivo == NULL || archivo1 == NULL || archivo2 == NULL)
    {
        printf("Archivo no puede ser leido\n\n");
        system("pause");
        exit(1);
    }
    
    /**
     * Estructura Transaccion
     * *<dia>*<mes>*<anio>*<id_local>*<id_producto>*<cantidad>*
     *
     */
    
    // Definimos vector de largo NUMERO_REGISTROS de tipo de datos "linea"
    trans_1 var_transaccion[NUMERO_REGISTROS];
    //Almacenamos las transacciones en el vector de estructura "var_transaccion"
    fila = 0;
    
    while (feof(archivo) == 0)
    {
        //Funcion que lee linea por linea e imprime por pantalla su resultado.
        fgets(caracteres,TAMANO_LINEA,archivo);
        strcpy(var_transaccion[fila].transaccion,caracteres);
        fila++;
    }
    
    trans_2 var_transaccion2[NUMERO_REGISTROS];
    fila = 0;
    
    while (feof(archivo1) == 0)
    {
        //Funcion que lee linea por linea e imprime por pantalla su resultado.
        fgets(caracteres,TAMANO_LINEA,archivo1);
        strcpy(var_transaccion2[fila].transaccion,caracteres);
        fila++;
    }
    
    trans_3 var_transaccion3[NUMERO_REGISTROS];
    fila = 0;
    
    while (feof(archivo2) == 0)
    {
        //Funcion que lee linea por linea e imprime por pantalla su resultado.
        fgets(caracteres,TAMANO_LINEA,archivo2);
        strcpy(var_transaccion3[fila].transaccion,caracteres);
        fila++;
    }
    
    // Se definen vectores de estructura
    transaccion ventas[NUMERO_REGISTROS];
    producto prods[NUMERO_PRODUCTOS];
    local loc[10];
    
    //Proceso de extraccion
    for( i = 0; i < NUMERO_REGISTROS ; i++)
    {
        //Extraer dia
        pos_ini =  1;
        pos_fin =  Buscar_String( var_transaccion[i].transaccion, caracter_buscado, pos_ini+1 );
        cantidad_caracteres = ((pos_fin - pos_ini) - 1);
        substring(variable_destino,var_transaccion[i].transaccion,pos_ini+1,cantidad_caracteres);
        //Almacenamos el variable extraida a la estructura
        ventas[i].dia = atoi(variable_destino);
        
        //Extraer mes
        pos_ini =  pos_fin;
        pos_fin =  Buscar_String( var_transaccion[i].transaccion, caracter_buscado, pos_ini+1 );
        cantidad_caracteres = ((pos_fin - pos_ini) - 1);
        substring(variable_destino,var_transaccion[i].transaccion,pos_ini+1,cantidad_caracteres);
        //Almacenamos el variable extraida a la estructura
        ventas[i].mes = atoi(variable_destino);
        
        //Extraer año
        pos_ini =  pos_fin;
        pos_fin =  Buscar_String( var_transaccion[i].transaccion, caracter_buscado, pos_ini+1 );
        cantidad_caracteres = ((pos_fin - pos_ini) - 1);
        substring(variable_destino,var_transaccion[i].transaccion,pos_ini+1,cantidad_caracteres);
        //Almacenamos el variable extraida a la estructura
        ventas[i].anio = atoi(variable_destino);
        
        //Extraer id local
        pos_ini =  pos_fin;
        pos_fin =  Buscar_String( var_transaccion[i].transaccion, caracter_buscado, pos_ini+1 );
        cantidad_caracteres = ((pos_fin - pos_ini) - 1);
        substring(variable_destino,var_transaccion[i].transaccion,pos_ini+1,cantidad_caracteres);
        //Almacenamos el variable extraida a la estructura
        ventas[i].id_local = atoi(variable_destino);
        
        //Extraer id producto
        pos_ini =  pos_fin;
        pos_fin =  Buscar_String( var_transaccion[i].transaccion, caracter_buscado, pos_ini+1 );
        cantidad_caracteres = ((pos_fin - pos_ini) - 1);
        substring(variable_destino,var_transaccion[i].transaccion,pos_ini+1,cantidad_caracteres);
        //Almacenamos el variable extraida a la estructura
        ventas[i].id_producto = atoi(variable_destino);
        
        //Extraer cantidad
        pos_ini =  pos_fin;
        pos_fin =  Buscar_String( var_transaccion[i].transaccion, caracter_buscado, pos_ini+1 );
        cantidad_caracteres = ((pos_fin - pos_ini) - 1);
        substring(variable_destino,var_transaccion[i].transaccion,pos_ini+1,cantidad_caracteres);
        //Almacenamos el variable extraida a la estructura
        ventas[i].cantidad = atoi(variable_destino);
    }
    //CERRAMOS EL ARCHIVO
    fclose(archivo);
    
    //Proceso de extraccion
    for(i=0;i<NUMERO_PRODUCTOS;i++)
    {
        
        //Extraer id producto
        pos_ini =  1;
        pos_fin =  Buscar_String( var_transaccion2[i].transaccion, caracter_buscado, pos_ini+1 );
        cantidad_caracteres = ((pos_fin - pos_ini) - 1);
        substring(variable_destino,var_transaccion2[i].transaccion,pos_ini+1,cantidad_caracteres);
        //Almacenamos el variable extraida a la estructura
        prods[i].id_producto = atoi(variable_destino);
        
        
        //Extraer nombre producto
        pos_ini =  pos_fin;
        pos_fin =  Buscar_String( var_transaccion2[i].transaccion, caracter_buscado, pos_ini+1 );
        cantidad_caracteres = ((pos_fin - pos_ini) - 1);
        substring(variable_destino,var_transaccion2[i].transaccion,pos_ini+1,cantidad_caracteres);
        //Almacenamos el variable extraida a la estructura
        strcpy(prods[i].nombre_producto,variable_destino);
        
        //Extraer precio unitario
        pos_ini =  pos_fin;
        pos_fin =  Buscar_String( var_transaccion2[i].transaccion, caracter_buscado, pos_ini+1 );
        cantidad_caracteres = ((pos_fin - pos_ini) - 1);
        substring(variable_destino,var_transaccion2[i].transaccion,pos_ini+1,cantidad_caracteres);
        //Almacenamos el variable extraida a la estructura
        prods[i].precio_unitario = atoi(variable_destino);
        
    }
    //CERRAMOS EL FILE
    fclose(archivo1);
    
    //Proceso de extraccion
    for( i = 0 ; i < 10 ; i++)
    {
        
        //Extraer id local
        pos_ini =  1;
        pos_fin =  Buscar_String( var_transaccion3[i].transaccion, caracter_buscado, pos_ini+1 );
        cantidad_caracteres = ((pos_fin - pos_ini) - 1);
        substring(variable_destino,var_transaccion3[i].transaccion,pos_ini+1,cantidad_caracteres);
        //Almacenamos el variable extraida a la estructura
        loc[i].id_local = atoi(variable_destino);
        
        
        //Extraer nombre local
        pos_ini =  pos_fin;
        pos_fin =  Buscar_String( var_transaccion3[i].transaccion, caracter_buscado, pos_ini+1 );
        cantidad_caracteres = ((pos_fin - pos_ini) - 1);
        substring(variable_destino,var_transaccion3[i].transaccion,pos_ini+1,cantidad_caracteres);
        //Almacenamos el variable extraida a la estructura
        strcpy(loc[i].nombre_local,variable_destino);
        
    }
    //CERRAMOS EL ARCHIVO
    fclose(archivo2);
    
    
    char option;
   
   while(tolower((option=menu()))!='x'){
        
        switch (option){
                
            case 'a':
                //caso1
                clearScreen();
                int mes;
                printf("Ingrese un mes entre 1-12: \n");
                scanf("%d", &mes);
                printf("\n");
                if(mes>0 && mes<13)
                    printf("MES: %s\nTOTAL: $%d\n",  meses[mes-1], ventas_mes(ventas, prods, mes));
                else
                    printf("No no no xD, ingresaste un mes fuera de range[1-12]!!!!, mes ingresado ->%d\n", mes );
                printf("\n");
                system("pause");
                clearScreen();
                break;
                
            case 'b':
                //caso2
                printf("");
                int cod_buscado;
                printf("Ingrese Cod sucursal: \n");
                scanf("%d", &cod_buscado);
                printf("\n");
                buscar_sucursal(loc, cod_buscado);
                printf("\n");
                system("pause");
                clearScreen();
                break;
                
            case 'c':
                //caso3
                printf("");
                int dia_b, mes_b, cod_b;//cod local
                printf("Ingresar dia: \n");
                scanf("%d", &dia_b);
                
                printf("Ingresar mes: \n");
                scanf("%d", &mes_b);
                
               
                
                if(date_is_valid(dia_b, mes_b)){
                    printf("Ingresar cod local: \n");
                    scanf("%d", &cod_b);
                    printf("\n");
                    //existe local?
                    if(!existe_local(loc, cod_b))
                        transacciones_buscadas(ventas, loc, prods, dia_b, mes_b, cod_b);
                    else
                        printf("Hey el codigo local -> %d, no es valido\n", cod_b);
                }else{
                    printf("FECHA INVALIDA, INGRESASTE %d-%d\n", dia_b, mes_b);
                    
                }
                system("pause");
                clearScreen();
                break;
                
            default:
                
                printf("Comando invalido\n\n"); 
                system("pause");
                clearScreen();
                break;
        }
    }
    
    return 0;
  
    
}