#include
#include
#define M 10
typedef struct lp
{
float x;
int num;
struct lp *next;
}LP;
int main(void)
{
LP *Z,*lim[M],*p;
int v,i,j,n,k,count=1;
float val[M];
p=Z;
printf("請輸入最大值函數的變數數目(此後,會將變數名稱依序編號為x1,x2,...): ");
scanf("%d",&v);
for(i=1;i<=v;i++)
{
p->next=(LP *)malloc(sizeof(LP));
p=p->next;
}
p->next=NULL;
p=Z->next;
for(i=1;i<=v;i++)
{
printf("請輸入x%d變數的係數: ",i);
scanf("%f",&p->x);
p->num=i;
p=p->next;
}
printf("請輸入限制式的數目(最多%d個): ",M);
scanf("%d",&n);
for(i=0;i<N;I++)
{
p=lim;
printf("請輸入第%d個限制式的變數數目: ",i+1);
scanf("%d",&k);
for(j=1;j<=k;j++)
{
p->next=(LP *)malloc(sizeof(LP)); <---問題癥結點
p=p->next;
}
p->next=NULL;
p=lim->next;
while(j<=k&&count<=n)
{
printf("請輸入此限制式x%d變數的係數(若無,請輸入數字0): ",count);
scanf("%f",&p->x);
if(p->x!=0.0f)
{
p->num=count;
p=p->next;
count++;
}
}
printf("請輸入此限制式的最大值: ");
scanf("%f",&val);
}
p=Z->next;
printf("你所輸入的最大值函數為Z=");
while(p!=NULL)
{
printf("%f*x%d",p->x,p->num);
if(p->next!=NULL)
printf("+");
p=p->next;
}
printf("\n\n");
printf("限制式為\n");
for(i=0;i<N;I++)
{
p=lim->next;
while(p!=NULL)
{
printf("%f*x%d",p->x,p->num);
if(p->next!=NULL)
printf("+");
p=p->next;
}
printf("≦%f",val);
printf("\n");
}
system("PAUSE");
return 0;
}
781 Bytes, 下載次數: 85, 下載積分: 鐵幣 -5 元
原文由 PoorCat0919 於 08-5-15 07:04 PM 發表 [原文]
這個程式有不少的問題存在
我想你在貼文時可能是用從新鍵入的方式
有些變數的名稱跑掉而了
問題主要出在於你只定義了一個指標的容器,而沒有給予實體的記憶體
for(i=1;inext=(LP *)malloc(sizeof(LP));
p=p->next;
}
...
歡迎光臨 鐵之狂傲 (https://gamez.com.tw/) |