Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #define filename "prodotti.txt"
- #define MAXC 25
- typedef struct {
- char *nome;
- float prezzo;
- }dettaglio;
- void comb_sempl(dettaglio *val,int k,float b,float *prezzo,char **sol,int n,int pos,int start)
- {
- int i;
- if(pos>=k && (*prezzo-val[start-1].prezzo)<=b)
- {
- printf("{");
- for(i=0;i<k;i++)
- {
- if(i!=k-1)
- printf("%s, ",sol[i]);
- else
- printf("%s",sol[i]);
- }
- printf("}\n");
- return;
- }
- for(i=start;i<n;i++)
- {
- sol[pos]=strdup(val[i].nome);
- *prezzo+=val[i].prezzo;
- comb_sempl(val,k,b,prezzo,sol,n,pos+1,i+1);
- *prezzo=0.0;
- }
- return;
- }
- int main()
- {
- FILE *in;
- int i,P,K;
- float B,prezzo=0.0;
- char buf[MAXC+1];
- dettaglio *lista;
- char **sol;
- in=fopen(filename,"r");
- if(in==NULL)
- return -1;
- fscanf(in,"%d",&P);
- lista=malloc(P*sizeof(dettaglio));
- for(i=0;i<P;i++)
- {
- fscanf(in,"%s %f",buf,&lista[i].prezzo);
- lista[i].nome=strdup(buf);
- }
- fclose(in);
- printf("Inserisci il numero minimo di prodotti: ");
- scanf("%d",&K);
- sol=malloc(K*sizeof(char*));
- printf("Inserisci il valore del budget: ");
- scanf("%f",&B);
- comb_sempl(lista,K,B,&prezzo,sol,P,0,0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement