Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct
- {
- int fam;
- int nr_Euca_love;
- int *Eucalipto;
- }koala;
- koala *Alloca_Koala(FILE*HAB,int *nr_koala);
- void StamapKoala(koala *K,int nk,int nF);
- void AssegnaFAM(koala *KOALA,FILE*FAM,int *nf);
- void FAM_NEM(int***M,int nf,FILE *NEM);
- void STAMPA_MAT_NEM(int **A,int nf);
- void Fottuti_koala(int pos,int nk,int nE,int *sol,int *EUCALIPTI,int **NEMICI,koala* K);
- int main()
- {
- int nr_fam,nr_koala,posti,nr_eucalipti,i;
- int **NEMICI;
- int *Eucalipti,*sol;
- FILE *FAM;
- FILE*HAB;
- FILE*NEM;
- koala*KOALA;
- FAM=fopen("famiglie.txt","r"); if (FAM==NULL) exit(2);
- HAB=fopen("habitat.txt","r"); if (HAB==NULL) exit(3);
- NEM=fopen("nemici.txt","r"); if (NEM==NULL) exit(4);
- KOALA=Alloca_Koala(HAB,&nr_koala);
- AssegnaFAM(KOALA,FAM,&nr_fam);
- StamapKoala(KOALA,nr_koala,nr_fam);
- FAM_NEM(&NEMICI,nr_fam,NEM);
- STAMPA_MAT_NEM(NEMICI,nr_fam);
- printf("\nDAMMI IN NUMERO di Eucalipti\n");
- scanf("%d",&nr_eucalipti);
- printf("\nDammi IL NUMERO DI KOALA PER EUCALIPTI\n");
- scanf("%d",&posti);
- sol=malloc(nr_koala*sizeof(int));
- Eucalipti=malloc(nr_eucalipti*sizeof(int));
- for(i=0;i<nr_eucalipti;i++) Eucalipti[i]=5;
- Fottuti_koala(0,nr_koala,nr_eucalipti,sol,Eucalipti,NEMICI,KOALA);
- return 0;
- }
- void Fottuti_koala(int pos,int nk,int nE,int *sol,int *EUCALIPTI,int **NEMICI,koala* K)
- {
- int i=0,j=0;
- if(pos==nk)
- {
- printf(" PARTIZIONE ");
- for(i=0;i<nk;i++) printf(" -%d- ",sol[i]);
- printf("\n");
- return;
- }
- for(i=0;i<nE;i++)
- {
- if(EUCALIPTI[i]>0)
- {
- sol[pos]=i;
- EUCALIPTI[i]--;
- Fottuti_koala(pos+1,nk,nE,sol,EUCALIPTI,NEMICI,K);
- EUCALIPTI[i]++;
- }
- }
- return;
- }
- void STAMPA_MAT_NEM(int **A,int nf)
- {
- int i=0,j=0;
- for(i=0;i<nf;i++)
- {
- for(j=0;j<nf;j++)
- printf("%d",A[i][j]);
- printf("\n");
- }
- }
- void FAM_NEM(int***M,int nf,FILE *NEM)
- {
- int **A;
- int C,B,i;
- A=malloc(nf*sizeof(int*));
- for(i=0;i<nf;i++)
- {
- A[i]=calloc(nf,sizeof(int));
- }
- while(fscanf(NEM,"%d %d",&C,&B)!=EOF)
- {
- A[C][B]=1;
- A[B][C]=1;
- }
- *M=A;
- }
- koala *Alloca_Koala(FILE*HAB,int *nr_koala)
- {
- int i,j;
- koala *K;
- fscanf(HAB,"%d",nr_koala);
- K=malloc((*nr_koala)*sizeof(*K));
- for(i=0;i<*nr_koala;i++)
- {
- fscanf(HAB,"%d",&K[i].nr_Euca_love);
- K[i].Eucalipto=malloc(K[i].nr_Euca_love*sizeof(int));
- for(j=0;j<K[i].nr_Euca_love;j++)
- {
- fscanf(HAB,"%d",&K[i].Eucalipto[j]);
- }
- }
- return K;
- }
- void AssegnaFAM(koala *KOALA,FILE*FAM,int *nf)//nf numero FAM
- {
- koala*K;
- K=KOALA;
- int i,j,fmloc,N;
- fscanf(FAM,"%d",nf);
- for(i=0;i<*nf;i++)
- {
- fscanf(FAM,"%d",&fmloc);
- for(j=0;j<fmloc;j++)
- {
- fscanf(FAM,"%d",&N);
- K[N].fam=i;
- }
- }
- }
- void StamapKoala(koala *K,int nk,int nF)
- {
- int i,j;
- for(i=0;i<nk;i++)
- {
- for(j=0;j<K[i].nr_Euca_love;j++)
- {
- printf("\n il Koala K[%d] FAM=%d vorrebbe vivere in Eucalipto %d ",i,K[i].fam,K[i].Eucalipto[j]);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement