hassan_kahrizy
سه شنبه 24 خرداد 1384, 12:08 عصر
بسمه تعالی
با سلام
در سورس زیر من ابتدا یک چند جمله ای که تعداد جمله های آن را از کاربر می پرسم ایجاد می کنم
سپس سورت می کنم ولی متاسفانه جمله آخری لیست پیوندی سورت نمی شود
همچنین وقتی دو جمله هم توان ایجاد می کنم باید با هم جمع بشه و یکی حذف بشه ولی در برخی موارد درست عمل نمی کنه
نمی دونم اشکالش کجاست؟
//// IN THE NAME OF GOD
#include<iostream.h>
#include<conio.h>
#include <stdlib.h>
class listnode
{
friend project;
private:
int tavan;
int zareb;
listnode *link;
};
class project
{
public:
project()
{
first=NULL;
second=NULL;
sum=NULL;
ptr=NULL;
}
void addnode(int,int);// tavan va zareb
void getlist(int); // shomare list
void showlist(int);// shomare list
void removelist(int,int);// shomare list va tavan gere
void sortlist();
void addedlists();
int menu();
private:
listnode *first;
listnode *second;
listnode *sum;
listnode *ptr;
};
void project::getlist(int lstnum)
{
int zar,tav,num_o_x;
if(lstnum==1)
ptr=first;
else
ptr=second;
cout<<"Enter number of x "<<lstnum<<" : ";
cin>>num_o_x;
do
{
cout<<"Enter zareb va tavan : ";
cin>>zar>>tav;
addnode(zar,tav);
num_o_x--;
}
while(num_o_x!=0);
if(lstnum==1)
first=ptr;
else
second=ptr;
};
void project::addnode(int zareb,int tavan)
{
listnode *newnode;
newnode= new listnode;
newnode->zareb=zareb;
newnode->tavan=tavan;
if(ptr==NULL)
{
ptr=newnode;
newnode->link=NULL;
}
else
{
newnode->link=ptr;
ptr=newnode;
}
};
void project::sortlist()
{
listnode *i,*last;
listnode *j;
int zart,tavt,a=1;
if (!first )
{
cout<<"this list is Empty";
return;
}
else
{
i=first;
while(i->link!=NULL)
{
last=i;
j=i->link;
while(j->link!=NULL)
{
if(i->tavan == j->tavan)
{
i->zareb+=j->zareb;
last->link=j->link;
delete j;
}
else if(i->tavan < j->tavan )
{
zart=i->zareb;
tavt=i->tavan;
i->zareb=j->zareb;
i->tavan=j->tavan;
j->zareb=tavt;
j->tavan=zart;
}
j=j->link;
last=last->link;
}
i=i->link;
}
}
}
void project::addedlists()
{
listnode *ptr1=first;
listnode *ptr2=second;
if(!ptr1||!ptr2)
{
cout<<"the list is empty";
getch();
exit(0);
}
else
{
}
}
void project::showlist(int lstnum)
{
if (lstnum==1)
ptr=first;
else if (lstnum==2)
ptr=second;
cout<<"\n "<<"The list "<< lstnum<< " is :"<<"\n";
do
{
cout<<ptr->zareb<<" X ^ "<<ptr->tavan<<" + ";
ptr=ptr->link;
if (ptr->link==NULL)
{
cout<<ptr->zareb<<" X ^ "<<ptr->tavan;
break;
}
}
while(2!=1);
}
void main()
{
clrscr();
project pro;
pro.getlist(1);
pro.sortlist();
pro.showlist(1);
getch();
}
:flower:
با تشکر
با سلام
در سورس زیر من ابتدا یک چند جمله ای که تعداد جمله های آن را از کاربر می پرسم ایجاد می کنم
سپس سورت می کنم ولی متاسفانه جمله آخری لیست پیوندی سورت نمی شود
همچنین وقتی دو جمله هم توان ایجاد می کنم باید با هم جمع بشه و یکی حذف بشه ولی در برخی موارد درست عمل نمی کنه
نمی دونم اشکالش کجاست؟
//// IN THE NAME OF GOD
#include<iostream.h>
#include<conio.h>
#include <stdlib.h>
class listnode
{
friend project;
private:
int tavan;
int zareb;
listnode *link;
};
class project
{
public:
project()
{
first=NULL;
second=NULL;
sum=NULL;
ptr=NULL;
}
void addnode(int,int);// tavan va zareb
void getlist(int); // shomare list
void showlist(int);// shomare list
void removelist(int,int);// shomare list va tavan gere
void sortlist();
void addedlists();
int menu();
private:
listnode *first;
listnode *second;
listnode *sum;
listnode *ptr;
};
void project::getlist(int lstnum)
{
int zar,tav,num_o_x;
if(lstnum==1)
ptr=first;
else
ptr=second;
cout<<"Enter number of x "<<lstnum<<" : ";
cin>>num_o_x;
do
{
cout<<"Enter zareb va tavan : ";
cin>>zar>>tav;
addnode(zar,tav);
num_o_x--;
}
while(num_o_x!=0);
if(lstnum==1)
first=ptr;
else
second=ptr;
};
void project::addnode(int zareb,int tavan)
{
listnode *newnode;
newnode= new listnode;
newnode->zareb=zareb;
newnode->tavan=tavan;
if(ptr==NULL)
{
ptr=newnode;
newnode->link=NULL;
}
else
{
newnode->link=ptr;
ptr=newnode;
}
};
void project::sortlist()
{
listnode *i,*last;
listnode *j;
int zart,tavt,a=1;
if (!first )
{
cout<<"this list is Empty";
return;
}
else
{
i=first;
while(i->link!=NULL)
{
last=i;
j=i->link;
while(j->link!=NULL)
{
if(i->tavan == j->tavan)
{
i->zareb+=j->zareb;
last->link=j->link;
delete j;
}
else if(i->tavan < j->tavan )
{
zart=i->zareb;
tavt=i->tavan;
i->zareb=j->zareb;
i->tavan=j->tavan;
j->zareb=tavt;
j->tavan=zart;
}
j=j->link;
last=last->link;
}
i=i->link;
}
}
}
void project::addedlists()
{
listnode *ptr1=first;
listnode *ptr2=second;
if(!ptr1||!ptr2)
{
cout<<"the list is empty";
getch();
exit(0);
}
else
{
}
}
void project::showlist(int lstnum)
{
if (lstnum==1)
ptr=first;
else if (lstnum==2)
ptr=second;
cout<<"\n "<<"The list "<< lstnum<< " is :"<<"\n";
do
{
cout<<ptr->zareb<<" X ^ "<<ptr->tavan<<" + ";
ptr=ptr->link;
if (ptr->link==NULL)
{
cout<<ptr->zareb<<" X ^ "<<ptr->tavan;
break;
}
}
while(2!=1);
}
void main()
{
clrscr();
project pro;
pro.getlist(1);
pro.sortlist();
pro.showlist(1);
getch();
}
:flower:
با تشکر