Ok ya entiendo lo que tratas de hacer.
Lo que intentas hacer es un grafo y lo puedes hacer de 2 formas:
1. Usando una matriz de adyacencia
2. Usando una lista de adyacencia
Si estuvieras usando C++ seria mas fácil.
Te dejo un ejemplo de lo que supongo quieres hacer.
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct barra {
double fem;
double df;
};
struct barra get_nudo(struct barra matrix[][26], char row, char column) {
return matrix[row - 'A'][column - 'A'];
}
void set_nudo(struct barra matrix[][26], char row, char column, struct barra value) {
matrix[row - 'A'][column - 'A'].df = value.df;
matrix[row - 'A'][column - 'A'].fem = value.fem;
}
void print_row(struct barra matrix[][26], char row) {
int i;
struct barra n;
for(i = 0; i < 26; i++) {
n = matrix[row - 'A'][i];
if(n.fem != 0.0 || n.df != 0.0)
printf("%c%c %.2f %.2f\n", row
, 'A'+i
, n.
fem, n.
df); }
}
void print_column(struct barra matrix[][26], char column) {
int i;
struct barra n;
printf("Columna %c\n", column
); for(i = 0; i < 26; i++) {
n = matrix[i][column - 'A'];
if(n.fem != 0.0 || n.df != 0.0)
printf("%c%c %.2f %.2f\n", 'A'+i
, column
, n.
fem, n.
df); }
}
int main()
{
int i, j;
struct barra nudos[26][26], nudo;
memset(nudos
, 0, 26 * 26 * sizeof(struct barra
));
nudo.fem = 1.0; nudo.df = 2.0;
set_nudo(nudos, 'A', 'B', nudo);
nudo.fem = 0.613; nudo.df = 0.0;
set_nudo(nudos, 'B', 'A', nudo);
nudo.fem = 0.387; nudo.df = -24.0;
set_nudo(nudos, 'B', 'C', nudo);
nudo.fem = 0.5; nudo.df = 24.0;
set_nudo(nudos, 'C', 'B', nudo);
nudo.fem = 0.5; nudo.df = 0.0;
set_nudo(nudos, 'C', 'D', nudo);
nudo.fem = 1.0; nudo.df = 0.0;
set_nudo(nudos, 'D', 'C', nudo);
print_row(nudos, 'A');
print_column(nudos, 'B');
return 0;
}