Linux - C en linux

   
Vista:

C en linux

Publicado por Jorge (1 intervención) el 01/07/2008 17:52:34
Hola

Alguien tendra un programa asi o parecido para C en linux

En una discoteca baño y si una mujer se encuentra en el interior del baño, no puede entrar un hombre, pero sí otras mujeres. Del mismo modo opera con los hombres.
Para limitar el tiempo de espera: Supongamos que el baño funciona con sólo mujeres, desde el tiempo T. Entonces el baño admitirá solo mujeres por D unidades de tiempo, a partir de T al terminar T+D, sólo pueden entrar mujeres en la medida que no hayan hombres esperando. Si hay hombres esperando, una vez que salgan todas las mujeres, entonces pueden entrar sólo hombres, aplicándose las mismas restricciones de tiempo.

Se los agradeceria un monton si me pudoeran ayudar con este programa
Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:C en linux

Publicado por ilean (1 intervención) el 24/07/2008 14:34:40
// Más adelante, cuando tus habilidades en programación mejoren, te reirás de lo que estas pidiendo.
// No has puesto ninguna restricción de uso de variables ni nada, así que lo hago global.
// Tampoco has dicho nada respecto al estilo. Por ejemplo, usar sólo un punto de retorno de las funciones.
// Y tampoco has dicho nada sobre el interface con el usuario del programa.

#define MAX_TIEMPO (30) // Tiempo que estaran como mucho mujeres o hombres

// NOTA: Las variables globales como estas se inicializan a 0 automáticamente.
int iTiempo; // Tiempo límite.
int iMujeres; // Si en el baño hay mujeres, será 1.
int iCantidad; // La cantidad de gente en el baño

// Esta función se llama cuando quiere entrar alguien en el baño. Si acepta el nuevo usuario, retorna 1, si no 0. Si es mujer, el parámetro será 1.
int Entra(int iMujer)
{
// Si es del mismo sexo que la gente que hay en el baño O no hay nadie en él.
if( (iMujer == iMujeres) || (iCantidad == 0) )
{
if( !iTiempo ) // No hay tiempo, es la primera persona que entra.
iTiempo = time() + MAX_TIEMPO;
else
if( iTiempo < time() ) // Ya ha expirado el tiempo para que entre más gente de este sexo.
return 0;
iCantidad++;
return 1;
}
return 0;
}
// NOTA: En vez de guardar el tiempo (T) y sumar la cantidad (D) como decías, es más eficiente
// guardar T+D y así a cada comprobación de estar dentro del tiempo no hace falta hacer la suma.
// El comportamiento de la función no varía.

//Llamada cuando sale alguien de dentro.
void Sale(void)
{
// Si es el último en salir, reseteo el tiempo y a esperar otro invitado al baño
if( --iCantidad <= 0 )// CUIDADO: Es un pre decremento!
iTiempo = 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar