PDA

View Full Version : سوال: اشکال در کد



hafez1
شنبه 29 مهر 1391, 14:49 عصر
من قبلا این سوالو تو سایت مطرح کردم به جز چند نفر از دوستان با وفا کسی توجهی نکرد.:گریه:
اینه که خودم یه سری کد سر هم کردم که ممکنه به درد .....:متعجب:
اگه یادتون باشه می خاسم یه برنامه بنویسم که کاربر یه معادله دلخواه وارد کنه.بد یه ایکس دلخواه باز خود کاربر وارد کنه.من باید مقدار این معادله رو به ازای ایکسش حساب کنم.
روش من اینه:
اومدم گفتم که ضریب و توان هر جمله رو از همون اول بریزه تو یه نود.ینی ما یه لینک لیست داریم که تو هر نودش دو تا داده داریم یکی توان و یکی ضریب.و هر نود به نود بدی که ضریب و توان جمله بدی توشه اشاره می کنه.
برای این که حافظه کمتری گرفته بشه اومدم معادله رو ساده کردم ینی مثلا اگه کاربر 3x^2+5x^4-6x^2+1 رو وارد کرد می یاد واسه 3x^2 یه نود می سازه.بد واسه 5x^4 یه نود می سازه وقتی رسید به -6x^2 می یاد از اول نودا رو چک می کنه می بینه توانش با توان نود اول برابره پس قسمت توان نود اولو 6 تا کم می کنه.ینی می شه -3.
این برنامه هه که نوشتم 1 رو ذخیره نمی کنهونمی دونم جملات ثابت رو چی کار کنم.
خیلی حرف زدم بگذریم.اینم کد.



#include <iostream>
#include<conio.h>
#include <string>
using namespace std;
class node{
// friend class linklist;
public:
int Zarib;
int Tavan;
node* next;
};
class linklist{
public:
node *first;
node *last;
};
int main()
{
node *ptr;
char e[30];
cin>>e;
int len,counter=1;
len=strlen(e);
cout<<len;
for(int i=0;i<len;i++)
{
if(e[i]=='x')
{
if(e[i+1]=='^')
{
if(first!=NULL)
{
ptr=first;
while(counter==1)
{
if(ptr->Tavan==e[i+1])
{
if(e[i-1]=='-')
{
ptr->Zarib=ptr->Zarib-1;
}
if(e[i-1]=='+')
{
ptr->Zarib=ptr->Zarib+1;
}
if(e[i-2]=='-')
{
ptr->Zarib=ptr->Zarib+(-1)*(e[i-1]);
}
if(e[i-2]=='+')
{
ptr->Zarib=ptr->Zarib+e[i-1];
}
counter=0;
}
else
{
ptr=ptr->next;
counter=1;
}
}
if(counter==1)
{
node *temp=new node;
linklist *list=new linklist;
if(e[i-1]=='-')
{
temp->Zarib=(-1);
}
if(e[i-1]=='+')
{
temp->Zarib=1;
}
if(e[i-2]=='-')
{
temp->Zarib=(-1)*(e[i-1]);
}
if(e[i-2]=='+')
{
temp->Zarib=e[i-1];
}
if(e[i+1]=='^')
{
temp->Tavan=e[i+2];
}
else
{
temp->Tavan=1;
}
if(i-1==0 || i-1==1)
{
list->first=temp;
list->last=temp;
}
else
{
list->last->next=temp;
list->last=temp;
}
return 0;
}


به امید راهنمایی دوستان.:خجالت: