Ver Mensaje Individual
  #3 (permalink)  
Antiguo 19/05/2013, 15:56
Avatar de razpeitia
razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Imprimir valores de struct usando punteros

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
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. struct barra {
  6.        double fem;
  7.        double df;
  8. };
  9.  
  10. struct barra get_nudo(struct barra matrix[][26], char row, char column) {
  11.     return matrix[row - 'A'][column - 'A'];
  12. }
  13.  
  14. void set_nudo(struct barra matrix[][26], char row, char column, struct barra value) {
  15.     matrix[row - 'A'][column - 'A'].df = value.df;
  16.     matrix[row - 'A'][column - 'A'].fem = value.fem;
  17. }
  18.  
  19. void print_row(struct barra matrix[][26], char row) {
  20.     int i;
  21.     struct barra n;
  22.  
  23.     printf("Fila %c\n", row);
  24.     for(i = 0; i < 26; i++) {
  25.         n = matrix[row - 'A'][i];
  26.         if(n.fem != 0.0 || n.df != 0.0)
  27.             printf("%c%c %.2f %.2f\n", row, 'A'+i, n.fem, n.df);
  28.     }
  29. }
  30.  
  31. void print_column(struct barra matrix[][26], char column) {
  32.     int i;
  33.     struct barra n;
  34.  
  35.     printf("Columna %c\n", column);
  36.     for(i = 0; i < 26; i++) {
  37.         n = matrix[i][column - 'A'];
  38.         if(n.fem != 0.0 || n.df != 0.0)
  39.             printf("%c%c %.2f %.2f\n", 'A'+i, column, n.fem, n.df);
  40.     }
  41. }
  42.  
  43. int main()
  44. {
  45.     int i, j;
  46.     struct barra nudos[26][26], nudo;
  47.  
  48.     memset(nudos, 0, 26 * 26 * sizeof(struct barra));
  49.  
  50.     nudo.fem = 1.0; nudo.df = 2.0;
  51.     set_nudo(nudos, 'A', 'B', nudo);
  52.  
  53.     nudo.fem = 0.613; nudo.df = 0.0;
  54.     set_nudo(nudos, 'B', 'A', nudo);
  55.     nudo.fem = 0.387; nudo.df = -24.0;
  56.     set_nudo(nudos, 'B', 'C', nudo);
  57.  
  58.     nudo.fem = 0.5; nudo.df = 24.0;
  59.     set_nudo(nudos, 'C', 'B', nudo);
  60.     nudo.fem = 0.5; nudo.df = 0.0;
  61.     set_nudo(nudos, 'C', 'D', nudo);
  62.  
  63.     nudo.fem = 1.0; nudo.df = 0.0;
  64.     set_nudo(nudos, 'D', 'C', nudo);
  65.  
  66.     print_row(nudos, 'A');
  67.     print_column(nudos, 'B');
  68.  
  69.  
  70.     return 0;
  71. }