Sunteți pe pagina 1din 2

14./*rucsacc.c-programul incarca un rucsac,utilizand metoda Greedy*/ #include<stdio.h> #include<conio.

h> #define DIM_MAX 20 void main() { floatp[DIM_MAX],g[DIM_MAX],el[DIM_MAX]; int n,i,j,inv,ordonat[DIM_MAX]; float gr,castig; clrscr(); printf("Capacitate rucsac(greutate admisa):"); scanf("%f",&gr); printf("Numarul de obiecte ce trebuie incarcate in rucsac(disponibile):"); scanf("%d",&n); printf("Specificati pentru fiecare obiect greutatea/profitul:\n"); for(i=0;i<n;i++) { printf("Greutate(%d)=",i+1); scanf("%f",&g[i]); printf("profit(%d)=",i+1); scanf("%f",&pi[i]); ordonat[i]=1; ef[i]=p[i]*g[i]; } do { inv=0; for(i=0;i<n;i++) if(ef[ordonat[i]]<ef[ordonat[i+1]]) { j=ordonat[i]; ordonat[i]=ordonat[i+1]; ordonat[i+1]=j; inv=1; } } while (inv); castig=0; i=0; printf("\nSe incarca in rucsac:\n"); while(gr>0 && i<n) { if(gr[ordonat[i]]) { printf("\tObiect %d incarcat in intregime\n",ordonat[i]+1); gr=gr-g[ordonat[i]]; castig=castig+p[ordonat[i]]; } else { printf("Obiect %d incarcat in proportie de""%.2f%\n",ordonat[i]+ 1,gr/g[ordonat[i]]*100); castig=castig+p[ordonat[i]]*gr/g[ordonat[i]]; gr=0; } i++; } printf("\nObiectele incarcate in rucsac sunt urmatoarle :\n"); for(j=0;j<n;j++) printf("\tObiectul:%d,de greutate:%.2f si profit:%.2f\n",ordonat[j]+1,g[

ordonat[j]],p[ordonat[j]]); if(gr) { printf("\nSe mai pot incarca obiecte de grutate:%.2f",gr); printf("\n\t\t rucsacul nu este plin,dar nu mai sunt obiecte.\n"); } printf("\nProfitul total obtinut pentru aceasta incarcare:%.2f\n",castig); printf("\nApasati o tasta pentru a termina programul!!!\n"); getch(); }

S-ar putea să vă placă și