UTNianos

Versión completa: [INFORMATICA II] Duda Ejercicio Final
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas noches en la ultima fecha de final tomaron estos dos ejercicios y estoy complicado en su resolucion.

2. Existe un archivo “datos.dat” de organización directa cuya estructura es: id long int, desc *char 60 caracteres, potencia char(0-255), unsigned int estado.
Realizar una función -en lenguaje C- que pase como parámetro, entre otros datos, la clave del registro (id). La función ubicará el registro correspondiente al id pasado como parámetro, y utilizando punteros imprimirá la primera palabra del campo Desc en forma inversa, además cambiará el estado del bit 3 para luego actualizar el archivo. Además, se agregará a una pila (en memoria dinámica con funciones de lenguaje c) la potencia cuando el bit 0 y 2 encendido del campo estado, en caso contrario se agregará el registro al archivo “salida.dat” de organización secuencial.

A la función se le pasará y retornará lo necesario sabiendo que:
1. La pila esta definida fuera de la función. 2. No existen variables globales. 3. Solo usar C ANSI

[u][u][u]Lo estoy encarando sabiendo lo siguiente:[/u][/u][/u]

1.Existe un archivo “datos.dat” de organización directa cuya estructura es: id long int, desc *char 60 caracteres, potencia char(0-255), unsigned int estado.
Me indica la estructura del archivo y su organización que es Directa es decir de acceso aleatorio para acceder al registro hay que usar la función fseek().

2.Realizar una función -en lenguaje C- que pase como parámetro, entre otros datos, la clave del registro (id).
Lo que te indica esta parte del enunciado que la función puede tener + de un parámetro pero uno de ello es la clave (id)

3. La función ubicará el registro correspondiente al id pasado como parámetro, y utilizando punteros imprimirá la primera palabra del campo Desc en forma inversa, además cambiará el estado del bit 3 para luego actualizar el archivo.

Justamente hay que realizar un fseek con el id para ubicar el registro (recordar que en un archivo directo el id es su posición física dentro del mismo)
Una ves ubicado con un puntero a char(*char) apuntar desc y moverlo hasta el primer espacio en blanco(o fin de cadena lo que ocurra primero) y luego imprimir caracter por caracter decrementando el puntero.(hay otras manera de hacerlo)
Par el bit 3 realizar una mascara con un & para saber el valor par luego cambiarlo, pide ademas regrabar el registro.

4. Además, se agregará a una pila (en memoria dinámica con funciones de lenguaje c) la potencia cuando el bit 0 y 2 encendido del campo estado, en caso contrario se agregará el registro al archivo “salida.dat” de organización secuencial.

Aca hay que armar una pila, pide usar funcione de c o sea usar malloc() y free(), la mascara es un & , para grabar el registro salida , simplemente hay que abrirlo de modo "ab" y fwrite() y listo.

Lo facil es decirlo al intentar programarlo estoy trabado hace unos dias. Necesoto una mano claramente.
URLs de referencia