hola gente, tengo una duda sobre unas prácticas que estoy haciendo en C. son de una asignatura que cursé hace un par de años pero aún debo recuperarlas y me noto oxidado.
el caso es que tengo que leer un archivo .txt con muchas líneas. cada línea tiene un formato especial en cuanto a los datos a leer se refiere. cada línea tiene el siguiente formato:
facultad género estudios residencia año instituto | contacto_1 contacto_2 contacto_3...
todo son números enteros. cada línea corresponde a los datos de un estudiante: la facultad dónde estudió, etc... y tras el separador están los contactos/amigos de ese estudiante (el proyecto es una especie de red social).
sé cómo leer el archivo usando fgets y strtok pero tengo dudas en cuanto a cómo tratar los datos para meterlos en el grafo. la definición de la estructura del grafo que tengo es la siguiente:
/* Se considera una implementación de grafo dirigo mediante listas
de adyacencia. El grafo consiste en una tabla de tantas entradas
como vértices. Cada entrada contiene un puntero a un objeto con
información genérica de tipo desconocido para el TAD, y además
el puntero inicial a una lista cuyos nodos representan los vertices
que son adyacentes al vértice asociado a dicha entrada. Por tanto,
cada nodo de la lista representa una arista entre dos vértices
del grafo. */
typedef void* tInfoNodoGrafo; // Puntero a objeto genérico de información
typedef struct tArista
{
int vertice; // Identificador del vértice adyacente
struct tArista* siguiente; // Puntero a la siguiente arista
} tArista;
typedef struct
{
tInfoNodoGrafo info; // Información asociada al vértice
tArista *arista; // Lista de aristas (vertices adyacentes)
} tVertice;
typedef struct
{
int n; // Número de vértices
tVertice *vertice; // Tabla de vértices
} tTablaVertices;
typedef tTablaVertices* tGrafo;
lo que no sé cómo hacer es cómo guardar todos los datos de cada línea en un grafo de estas características.
si es necesaria más info puedo proporcionar lo que sea necesario, tanto trozos de código específicos como archivos del proyecto.
por último pido disculpas si el post parece tener tintes de "hacedme las prácticas" pero ni mucho menos, cómo he dicho más arriba estoy oxidado.
gracias.
el caso es que tengo que leer un archivo .txt con muchas líneas. cada línea tiene un formato especial en cuanto a los datos a leer se refiere. cada línea tiene el siguiente formato:
facultad género estudios residencia año instituto | contacto_1 contacto_2 contacto_3...
todo son números enteros. cada línea corresponde a los datos de un estudiante: la facultad dónde estudió, etc... y tras el separador están los contactos/amigos de ese estudiante (el proyecto es una especie de red social).
sé cómo leer el archivo usando fgets y strtok pero tengo dudas en cuanto a cómo tratar los datos para meterlos en el grafo. la definición de la estructura del grafo que tengo es la siguiente:
/* Se considera una implementación de grafo dirigo mediante listas
de adyacencia. El grafo consiste en una tabla de tantas entradas
como vértices. Cada entrada contiene un puntero a un objeto con
información genérica de tipo desconocido para el TAD, y además
el puntero inicial a una lista cuyos nodos representan los vertices
que son adyacentes al vértice asociado a dicha entrada. Por tanto,
cada nodo de la lista representa una arista entre dos vértices
del grafo. */
typedef void* tInfoNodoGrafo; // Puntero a objeto genérico de información
typedef struct tArista
{
int vertice; // Identificador del vértice adyacente
struct tArista* siguiente; // Puntero a la siguiente arista
} tArista;
typedef struct
{
tInfoNodoGrafo info; // Información asociada al vértice
tArista *arista; // Lista de aristas (vertices adyacentes)
} tVertice;
typedef struct
{
int n; // Número de vértices
tVertice *vertice; // Tabla de vértices
} tTablaVertices;
typedef tTablaVertices* tGrafo;
lo que no sé cómo hacer es cómo guardar todos los datos de cada línea en un grafo de estas características.
si es necesaria más info puedo proporcionar lo que sea necesario, tanto trozos de código específicos como archivos del proyecto.
por último pido disculpas si el post parece tener tintes de "hacedme las prácticas" pero ni mucho menos, cómo he dicho más arriba estoy oxidado.
gracias.