[ Foro de C ]

ejercico con data.bin

16-Sep-2023 23:40
Invitado (cristian sanabria )
0 Respuestas

Estructura del Archivo Binario:
El archivo binario sigue una estructura específica con un encabezado que proporciona información sobre las longitudes de las tres secciones: Estudiantes, Cursos y Matrículas. El formato del encabezado es el siguiente:

Formato del Encabezado

El encabezado del archivo se formatea de la siguiente manera:

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Magic String (0xaaae)      |      Student Count            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Student Count (cont.)      |    Course Count               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Course Count (cont.)       |    Enrollment Count           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|    Enrollment Count (cont.)   |    Data                      …
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

Cadena Mágica: 16 bits
 Valor predefinido de 0xaaae
Cantidad de Estudiantes: 32 bits
 Número de estudiantes en el archivo en formato little endian
Cantidad de Cursos: 32 bits
 Número de cursos en el archivo en formato little endian
Cantidad de Matrículas: 32 bits
 Número de matrículas en el archivo en formato little endian


Sección de Estudiantes

Inmediatamente después del encabezado del archivo, se enumeran los registros de estudiantes. Los registros de estudiantes están formateados de la siguiente manera. Se almacenan uno detrás del otro en el archivo sin relleno entre registros. El número total de registros de estudiantes se especifica en el encabezado del archivo.

0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Student ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|G|  Rsrvd    |                Student Name                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                Student Name (cont.) [5 times]                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              Age                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

ID del Estudiante: 32 bits
 Identificador único del estudiante
Banderas: 8 bits
 La bandera F es 1 si el estudiante es femenino y 0 si el estudiante es masculino. La bandera G es 1 si el usuario es estudiante de posgrado y 0 en caso contrario.
Nombre del Estudiante: 23 bytes
 Nombre del estudiante en formato ASCII
Edad del Estudiante: 32 bits
 Edad del estudiante como un número entero de 32 bits en formato little endian

Sección de Cursos

Inmediatamente después de la Sección de Estudiantes, se enumeran los registros de cursos. Los registros de cursos están formateados de la siguiente manera. Se almacenan uno detrás del otro en el archivo sin relleno entre registros. El número total de registros de cursos se especifica en el encabezado del archivo.


0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Course ID                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Course Name                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                 Course Name (cont.) [7 times]                 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          Credit Hours                         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

ID del Curso: 32 bits
 Identificador único del curso
Nombre del Curso: 32 bytes
 Nombre del curso en formato ASCII
Horas de Crédito: 32 bits
 Número de horas de crédito del curso como un número entero de 32 bits en formato little endian

Sección de Matrículas

Inmediatamente después de la Sección de Cursos, se enumeran los registros de matrículas. Los registros de estudiantes están formateados de la siguiente manera. Se almacenan uno detrás del otro en el archivo sin relleno entre registros. El número total de registros de estudiantes se especifica en el encabezado del archivo.












0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Student ID                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Course ID                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                              Year                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             Semester                          |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

ID del Estudiante: 32 bits
 Identificador único del estudiante
ID del Curso: 32 bits
 Identificador único del curso
Año: 32 bits
 El año en que el estudiante se matriculó en el curso como un número entero de 32 bits en formato little endian
Semestre: 32 bits
 El semestre en el que el estudiante se matriculó en el curso como un número entero de 32 bits en formato little endian

Tareas

Tarea 1: Encontrar Estudiantes por Rango de Edad (20%)

Tarea:
Implementa un programa en C que lea el archivo binario e imprima los nombres, edades y géneros de todos los estudiantes dentro de un rango de edades. El rango de edades y el nombre del archivo binario se proporcionarán como argumentos de línea de comandos. El filtro de edades debe incluir los argumentos de límite superior e inferior.

Salida de Ejemplo:


Argumentos de Línea de Comandos:
- Argumento 1: Nombre del archivo binario (por ejemplo, "sample_data.bin")
- Argumento 2: Edad mínima
- Argumento 3: Edad máxima

Suposiciones:
- La edad mínima y máxima son números enteros positivos.
- La edad mínima es menor o igual a la edad máxima




(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)