Advertisement
Guest User

Untitled

a guest
Dec 12th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.28 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. typedef struct
  5. {
  6.     int fam;
  7.     int nr_Euca_love;
  8.     int *Eucalipto;
  9.  
  10. }koala;
  11.  
  12. koala *Alloca_Koala(FILE*HAB,int *nr_koala);
  13. void StamapKoala(koala *K,int nk,int nF);
  14. void AssegnaFAM(koala *KOALA,FILE*FAM,int *nf);
  15. void FAM_NEM(int***M,int nf,FILE *NEM);
  16. void STAMPA_MAT_NEM(int **A,int nf);
  17. void Fottuti_koala(int pos,int nk,int nE,int *sol,int *EUCALIPTI,int **NEMICI,koala* K);
  18.  
  19. int main()
  20. {
  21. int nr_fam,nr_koala,posti,nr_eucalipti,i;
  22. int **NEMICI;
  23. int *Eucalipti,*sol;
  24. FILE *FAM;
  25. FILE*HAB;
  26. FILE*NEM;
  27. koala*KOALA;
  28. FAM=fopen("famiglie.txt","r"); if (FAM==NULL) exit(2);
  29. HAB=fopen("habitat.txt","r"); if (HAB==NULL) exit(3);
  30. NEM=fopen("nemici.txt","r"); if (NEM==NULL) exit(4);
  31. KOALA=Alloca_Koala(HAB,&nr_koala);
  32. AssegnaFAM(KOALA,FAM,&nr_fam);
  33. StamapKoala(KOALA,nr_koala,nr_fam);
  34. FAM_NEM(&NEMICI,nr_fam,NEM);
  35. STAMPA_MAT_NEM(NEMICI,nr_fam);
  36. printf("\nDAMMI IN NUMERO di Eucalipti\n");
  37. scanf("%d",&nr_eucalipti);
  38. printf("\nDammi IL NUMERO DI KOALA PER EUCALIPTI\n");
  39. scanf("%d",&posti);
  40. sol=malloc(nr_koala*sizeof(int));
  41. Eucalipti=malloc(nr_eucalipti*sizeof(int));
  42. for(i=0;i<nr_eucalipti;i++) Eucalipti[i]=5;
  43. Fottuti_koala(0,nr_koala,nr_eucalipti,sol,Eucalipti,NEMICI,KOALA);
  44.     return 0;
  45. }
  46.  
  47.  
  48. void Fottuti_koala(int pos,int nk,int nE,int *sol,int *EUCALIPTI,int **NEMICI,koala* K)
  49. {
  50. int i=0,j=0;
  51. if(pos==nk)
  52. {
  53. printf(" PARTIZIONE  ");
  54. for(i=0;i<nk;i++) printf(" -%d- ",sol[i]);
  55.     printf("\n");
  56.   return;
  57. }
  58.  
  59. for(i=0;i<nE;i++)
  60. {
  61.     if(EUCALIPTI[i]>0)
  62.     {
  63.         sol[pos]=i;
  64.         EUCALIPTI[i]--;
  65.         Fottuti_koala(pos+1,nk,nE,sol,EUCALIPTI,NEMICI,K);
  66.         EUCALIPTI[i]++;
  67.     }
  68.  
  69. }
  70.  
  71. return;
  72. }
  73.  
  74.  
  75.  
  76. void STAMPA_MAT_NEM(int **A,int nf)
  77. {
  78.     int i=0,j=0;
  79.     for(i=0;i<nf;i++)
  80.     {
  81.     for(j=0;j<nf;j++)
  82.         printf("%d",A[i][j]);
  83.      printf("\n");
  84.     }
  85.  
  86. }
  87.  
  88. void FAM_NEM(int***M,int nf,FILE *NEM)
  89. {
  90.     int **A;
  91.     int C,B,i;
  92.  
  93.     A=malloc(nf*sizeof(int*));
  94.     for(i=0;i<nf;i++)
  95.     {
  96.         A[i]=calloc(nf,sizeof(int));
  97.     }
  98.     while(fscanf(NEM,"%d %d",&C,&B)!=EOF)
  99.     {
  100.         A[C][B]=1;
  101.         A[B][C]=1;
  102.     }
  103.     *M=A;
  104.  
  105. }
  106.  
  107. koala *Alloca_Koala(FILE*HAB,int *nr_koala)
  108. {
  109.     int i,j;
  110.     koala *K;
  111.     fscanf(HAB,"%d",nr_koala);
  112.     K=malloc((*nr_koala)*sizeof(*K));
  113.         for(i=0;i<*nr_koala;i++)
  114.         {
  115.          fscanf(HAB,"%d",&K[i].nr_Euca_love);
  116.          K[i].Eucalipto=malloc(K[i].nr_Euca_love*sizeof(int));
  117.             for(j=0;j<K[i].nr_Euca_love;j++)
  118.             {
  119.                 fscanf(HAB,"%d",&K[i].Eucalipto[j]);
  120.             }
  121.  
  122.         }
  123.     return K;
  124. }
  125.  
  126.  
  127. void AssegnaFAM(koala *KOALA,FILE*FAM,int *nf)//nf numero FAM
  128. {
  129.     koala*K;
  130.     K=KOALA;
  131.     int i,j,fmloc,N;
  132.  
  133.     fscanf(FAM,"%d",nf);
  134.         for(i=0;i<*nf;i++)
  135.         {
  136.             fscanf(FAM,"%d",&fmloc);
  137.                 for(j=0;j<fmloc;j++)
  138.                 {
  139.                     fscanf(FAM,"%d",&N);
  140.                     K[N].fam=i;
  141.                 }
  142.         }
  143. }
  144.  
  145.  
  146.  
  147. void StamapKoala(koala *K,int nk,int nF)
  148. {
  149.     int i,j;
  150.  
  151.     for(i=0;i<nk;i++)
  152.         {
  153.  
  154.             for(j=0;j<K[i].nr_Euca_love;j++)
  155.             {
  156.               printf("\n il Koala K[%d] FAM=%d vorrebbe vivere in Eucalipto %d ",i,K[i].fam,K[i].Eucalipto[j]);
  157.  
  158.             }
  159.  
  160.         }
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement