من خطاهاش رو پيدا کردم ولي اينکه پروزه شما جواب درست مي ده يا نه نمي دونم.آخه کار پروژه رو نمي دونم چيه.
#include"iostream.h"
#include<stdio.h>
#include<conio.h>
#include<math.h>
int knapsack(int totalw,int n);
int sort (int p[],int w[],int n);
int p[10],w[10];
//******************************
main()
{
clrscr();
int i,n,totalw;
printf(" enter n , w ");
scanf("%d",&n,&w);
knapsack(totalw,n);
return 0;
}
//******************************
int knapsack(int totalw,int n)
{
int i,j,u;
float x[10];
for(i=0;i<n;i++)
{
printf(" enter p[i] and w[i]");
scanf("%d,%d",&p[i],&w[i]);
}
sort(&p[i],&w[i],n);
for (i=0;i<=n;i++)
{
x[i]=0;
u=totalw;
}
for( i=0;i<= n ;i++)
{
if(w[i]>u)
break;
x[i]=1;
u=u-w[i];
}
if(i<n)
x[i]= u/w[i];
return 0;
}
//******************************
int sort ( int p[],int w[],int n)
{
int temp1,temp2;
for(int i=0;i<n;i++)
{
if(p[i]/w[i]<p[i+1]/w[i+1])
{
temp1 =p[i];
p[i]=p[i+1];
p[i+1]=temp1;
temp2=w[i];
w[i]=w[i+1];
w[i+1]= temp2;
}
return (p[i],w[i]);
}
return 0;
}
//******************************
يه جا سمي کالن نذاشته بودي.
يه جا متغير ها رو که آرايه تعريف کرده بودي بايد از امپرسنت استفاده مي کردي که نکرده بودي.
اگه مي خواي جواب تابع به تابع اصلي برگردد بايد از نوع پارامتر ارجاعي بنويسي. وگرنه از پارامتر مقدار استفاده کن.
و در اخر اينکه وقتي از دستور for يا if استفاده مي کني که بيشتر از يک دستور دارد بايد از آکولاد استفاده کني وگرنه فقط يک دستور را براي حلقه اجرا مي کند.
سئوالي بود در خدمتيم
.gif)