Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <stdlib.h>
- #define M 25
- typedef struct{
- float p;
- int l;
- char *V;
- }struttura;
- int carica_dati(FILE *fp,struttura **s);
- int comb(int pos,struttura *val,struttura *sol, int n, int k,int start, int count, int somma);
- int main()
- {
- int pos=0,count=0;
- char *sigla;
- int j,b;
- struttura *s,*sol;
- FILE *fp_in;
- fp_in=fopen("prodotti.txt","r");
- b=carica_dati(fp_in,&s);
- //STAMPA DEI DETI PER VEDERE SE SONO EFFETTIVAMENTE CARICATI NELLA STRUTTURA
- for(j=0;j<b;j++){
- printf("\n%d %s %f",s[j].l,s[j].V,s[j].p);
- }
- printf("\n");
- //FUNZIONE RICORSIVA
- //for (j=1;j<=b;j++){
- sol = malloc(3 * sizeof(*sol));
- count = comb(pos, s, sol, b, 3, 0, &count,0);
- }
- //}
- int carica_dati(FILE *fp_in,struttura **s){
- struttura *S;
- int n,j,x;
- char parola[M];
- fscanf(fp_in,"%d",&n);
- printf("%d",n);
- S=malloc(n*sizeof(*S));
- for(j=0;j<n;j++){
- fscanf(fp_in,"%s %f",parola,&S[j].p);
- S[j].l=strlen(parola);
- S[j].V=strdup(parola);
- }
- *s=S;
- return n;
- }
- int comb(int pos,struttura *val,struttura *sol, int n, int k,int start, int count,int somma) {
- char parola[M];
- int i, j;
- if (pos >= k) {
- if(somma<10){
- for (i=0; i<k; i++)
- printf("%s ", sol[i].V);
- printf("%f\n",somma);
- return count+1;
- }
- }
- for (i=start; i<n; i++) {
- //parola=val[i].V;
- //sol[pos].V=(parola)
- sol[pos].V=strdup(val[i].V);
- somma+=val[i].p;
- //printf("%f ",val[i].p);
- count = comb(pos+1, val, sol, n, k, i+1, count,somma);
- }
- return count;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement