/* Problema continua a rucsacului */ #include #include void main(void) { double c[9],g[9],ef[9],gv,aux,castig; int n,i,aux1,inv,ordine[9]; clrscr(); printf("Greutatea=");scanf("%lf",&gv); printf("Nr. de obiecte=");scanf("%d",&n); // c[i]=castigul produs de obiectul i // g[i]=greutatea obiectului i // ef[i]=eficienta de transport =c[i]/g[i] for (i=1;i<=n;i++) { printf("c[%d]=",i);scanf("%lf",&c[i]); printf("g[%d]=",i);scanf("%lf",&g[i]); ordine[i]=i; ef[i]=c[i]/g[i]; } // sortarea obiectelor in ordine descrescatoare a eficientei // de transport do { inv=0; for(i=1;i<=n-1;i++) if (ef[i]0 && i<=n) { if(gv>g[i]) { printf("obiectul %d intreg\n",ordine[i]); gv-=g[i]; castig+=c[i]; } else { printf("obiectul %d in raport de %lf\n",ordine[i],gv/g[i]); castig+=c[i]*gv/g[i]; gv=0; } i++; } printf("Castig total=%lf\n",castig); getch(); }