#include struct V { int HorasMedicion[6]; }; struct C { struct V VProductos; } Config = { { 8, 12, 16, 20, 24, 4 } }; char TablaHoraria[24]; void ConstruyeTablaHoraria(void); void main(void) { int i; for ( i=0; i < 20; i++ ) printf ( "\n" ); ConstruyeTablaHoraria(); printf ( "0: %02d:00 >-< %02d:00 \n", Config.VProductos.HorasMedicion[0], Config.VProductos.HorasMedicion[1] ); printf ( "1: %02d:00 >-< %02d:00 \n", Config.VProductos.HorasMedicion[1], Config.VProductos.HorasMedicion[2] ); printf ( "2: %02d:00 >-< %02d:00 \n", Config.VProductos.HorasMedicion[2], Config.VProductos.HorasMedicion[3] ); printf ( "3: %02d:00 >-< %02d:00 \n", Config.VProductos.HorasMedicion[3], Config.VProductos.HorasMedicion[4] ); printf ( "4: %02d:00 >-< %02d:00 \n", Config.VProductos.HorasMedicion[4], Config.VProductos.HorasMedicion[5] ); printf ( "5: %02d:00 >-< %02d:00 \n", Config.VProductos.HorasMedicion[5], Config.VProductos.HorasMedicion[0] ); printf ( "\n" ); for ( i = 0; i < 12; i++ ) { printf( " %02d >-> %d %02d >-> %d \n", i, TablaHoraria[i], i+12, TablaHoraria[i+12] ); } } void ConstruyeTablaHoraria(void) { int i, j, k; // Revisamos las 24 horas posibles: 00 - 1 - 2 - ... - 22 - 23 for ( i = 0; i < 24; i ++ ) // Por cada hora verificamos el rango donde pueda estar ( 0 - 5 ) for ( j = 0; j < 6; j ++ ) { for ( k = ( Config.VProductos.HorasMedicion[j] % 24); k != (Config.VProductos.HorasMedicion[(j+1)%6]%24); k = (++k)%24 ) { if ( i == k ) { TablaHoraria[i] = j; break; } } if ( k != (Config.VProductos.HorasMedicion[(j+1)%6]%24) ) break; } }