Advertisement
NicolaDelPrete

Grafo con Matrice

Feb 12th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.60 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <assert.h>
  4. typedef struct grafo
  5. {
  6.     int *matrice;
  7.     int *nodi;
  8. }grafo;
  9. typedef grafo *pgrafo;
  10. void inizia (pgrafo k,int size)
  11. {
  12.     int i;
  13.     for(i=0;i<size;i++)
  14.     {
  15.         printf("Inserie il [%d]NODO: ",i+1);
  16.         scanf("%d",&k->nodi[i]);
  17.     }
  18. }
  19. void carica_matrice(pgrafo k,int size)
  20. {
  21.     int i,j;
  22.     for(i=0;i<size;i++)
  23.     {
  24.         for(j=0;j<size;j++)
  25.         {
  26.             if(j>=i)
  27.             {
  28.                 printf("Quanto pesa il collegamento tra [%d] e [%d]",k->nodi[j],k->nodi[i]);
  29.                 scanf("%d",&k->matrice[j*size+i]);
  30.                 k->matrice[i*size+j]=k->matrice[j*size+i];
  31.             }
  32.         }
  33.     }
  34. }
  35. void stampa_nodi(pgrafo k,int size)
  36. {
  37.     int i,j;
  38.     for(i=0;i<size;i++)
  39.     {
  40.         printf("\n%d ",k->nodi[i]);
  41.         for(j=0;j<size;j++)
  42.         {
  43.             if(k->matrice[i*size+j]!=0)
  44.             {
  45.                printf("- %d ",k->nodi[j]);
  46.             }
  47.         }
  48.     }
  49. }
  50. void media(pgrafo k, int size)
  51. {
  52.     int i,j;
  53.     float media=0;
  54.     for(i=0;i<size;i++)
  55.     {
  56.         for(j=0;j<size;j++)
  57.         {
  58.             media+=k->matrice[i*size+j];
  59.         }
  60.     }
  61.     printf("LA MEDIA E': %5.2f",(media/size));
  62. }
  63. int main()
  64. {
  65.     int size;
  66.     printf("Inserire la quantita di nodi: ");
  67.     scanf("%d",&size);
  68.     pgrafo k;
  69.     k=calloc(1,sizeof(struct grafo));
  70.     k->matrice=calloc(size*size,sizeof(int));
  71.     k->nodi=calloc(size,sizeof(int));
  72.     inizia(k,size);
  73.     carica_matrice(k,size);
  74.     stampa_nodi(k,size);
  75.     media(k,size);
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement