Dev - C++ - Problema/ejercicio en C

 
Vista:
sin imagen de perfil
Val: 1
Ha disminuido su posición en 9 puestos en Dev - C++ (en relación al último mes)
Gráfica de Dev - C++

Problema/ejercicio en C

Publicado por Marisa (1 intervención) el 26/12/2017 18:59:29
Buenas tardes,

Tengo un problema por resolver en C y la verdad que no me manejo muy bien y ando algo perdida. Me indican lo siguiente:

Tengo que crear un archivo en C, y en su cabecera que contenga una serie de funciones:

a_sem(S,tipo,N). Esta función la primera vez que se invoca en el código de un programa
crea un conjunto de semáforos de N elementos y comprueba que se ha creado con éxito. Una
vez creado el conjunto mediante el uso de una estructura de datos global asocia al primer semáforo
del conjunto el nombre especificado en S y el tipo especificado en tipo. Tanto el nombre
como el tipo son cadenas de caracteres. El tipo solo puede tomar dos valores: 'B' (binario) o 'G'
(general).
Cuando esta función se vuelve a invocar, puesto que el conjunto de semáforos ya está creado,
lo único que hace es asociar a otro semáforo del conjunto el nombre y el tipo especificados
como argumentos de entrada. Antes de realizar la asignación comprueba que existen semáforos
disponibles que no tienen un nombre asignado y comprueba que el tipo corresponde a uno de
los dos tipos permitidos.
Tanto en la primera como en las restantes invocaciones de esta función si alguna comprobación
no es positiva entonces se muestra en la pantalla un mensaje explicativo y finaliza la ejecución
del programa.
– i_sem(S,x). Esta función inicializa el semáforo de nombre S con el valor x. Antes de realizar
la inicialización comprueba que x cumple con las especificaciones asociadas al tipo de semáforo,
es decir, si es un semáforo binario x debe ser 0 o 1, y si es un semáforo general debe ser un
numero entero positivo mayor o igual a 0. Si la comprobación no es positiva entonces se muestra
en la pantalla un mensaje explicativo y finaliza la ejecución del programa

He creado la primera función pero tengo problemas, pueden darme unas pistas o una ayudita, por favor?

Gracias, ( tengo hecho esto)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#includess
 
struct sembuf decrementar[1]={0,-1,0};
struct sembuf incrementar[1]={0,1,0};
 
int semid;
int resultado;
 
void a_sem(int N)
{
    /*Crear u obtener un conjunto de semáforos de un semáforo (N=5) */
    semid=semget(CLAVE,5,IPC_CREAT|PERMISOS);
 
    if (semid==-1) /*Comprobar se ha habido algún error*/
    {
        printf("\nError");
        exit(-1);
    }
    /* Inicializar el semáforo a 1*/
    resultado= semctl(semid,0,SETVAL,val);
}
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