PDA

View Full Version : سوال: خطا در برنامه جمع دو چند جمله ای



liliyan87
جمعه 04 دی 1388, 19:31 عصر
با سلام خدمت تمام اعضای محترم
این برنامه فعلا برای جمع دو چند جمله ایه وقتی برنامه رو اجرا میکنم در تابع setPolynomial کد int arr[x]خطا میگیره لطفا راهنمایی کنید تا بتونم خطاشو برطرف کنم خیلی برام ضروریه مرسی.


# include <iostream>
#include <conio.h>
#include <stdlib.h>

class Polynomial
{
private :
int *array ;
int x ;
public :
Polynomial(int y)
{
x = y ;
}
void setPolynomial() ;
int getPolynomial() ;

void operator = (const Polynomial& ) ;
Polynomial operator + (const Polynomial& ) ;
Polynomial operator - (const Polynomial& ) ;
Polynomial operator * (const Polynomial& ) ;
Polynomial operator += (const Polynomial& ) ;
Polynomial operator -= (const Polynomial& ) ;
Polynomial operator *= (const Polynomial& ) ;
};

void Polynomial::setPolynomial()
{
array = new int [x] ;
int arr[x] ;
for ( int i = 0 ; i < x+1 ; i++ )
{
cout << "Enter Cofficinet x^( " << i <<") : " ;
cin >> arr[i] ;
array[i] = arr[i] ;
}
}

int Polynomial::getPolynomial()
{
// array = new int [x] ;
for (int i = 0 ; i < x+1 ; i++)
{
cout <<"Cofficinet x^( " << i <<") : " << array[i] << endl;
}
}


Polynomial Polynomial::operator + (const Polynomial& p )
{
array = new int [x] ;
int arr [x] ;

for ( int i = 0 ; i < x+1 ; i++ )
{
arr[i] = array[i] + p.array[i] ;

cout <<"Cofficinet x^( " << i <<") : " << arr[i] << endl ;
}

}



int main ()
{
int power ;
char choice ;
cout << "The Polynomial Function to the Power : " ;
cin >> power ;

Polynomial p1(power) ;
Polynomial p2(power) ;

p1.setPolynomial() ;

cout << "Enter Operator ( + , - , * , * , += , -= , *= ) : " ;
cin >> choice ;

switch (choice)
{
case '+' :
p2.setPolynomial() ;
Polynomial p3(power) ;

p3 = p1 + p2 ;
p3.getPolynomial() ;
break ;
}

system("pause");
return 0 ;
}

اینم از خطا :

:

Error POL2.CPP 29: Constant expression required in function Polynomial::setPolynomial()
Warning POL2.CPP 45: Function should return a value in function Polynomial::getPolynomial()


منظور خطا میدونم ولی راهکاری برای برطرف کردنش ندارم منتظرم.

Altech
جمعه 04 دی 1388, 19:56 عصر
خب نمی تونین که از یه متغیر برای مشخص کردن اندازه آرایه استفاده کنین . به جای دستور :


int arr[x];

باید از دستور :


int *arr= new int [x] ;

استفاده کنین . راستی تا حد ممکن از کلمه array برای مشخص کردن نام متغیرتون استفاده نکنین . اون یه کلمه رزرو شده در ++C هست .

liliyan87
جمعه 04 دی 1388, 21:19 عصر
مرسی دوست عزیز فکر کنم درست شد البته هنوز کامل نیست array رو هم تغییر دادم
فقط یه سوال دیگه از
system("pause") ایراد میگیره چه هدر فایلی باید اضافه کنم تا به این کد ایراد نگیره ؟

Altech
جمعه 04 دی 1388, 21:31 عصر
باید ایراد نگیره . شما از چه محیطی استفاده می کنین ؟ لینوکس یا ویندوز ؟ آخه این دستور استاندارد نیست و بستگی به اون شل داره که pause رو پشتیبانی کنه یا نه . مثلا cmd پشتیبانی می کنه .

liliyan87
شنبه 05 دی 1388, 00:57 صبح
برنامه رو درTurbo C++a نوشتم تو ویندوز
لطفا یه نگاهی به برنامه بنداز ببین قسمت عملگر + درسته؟ میسی

liliyan87
شنبه 05 دی 1388, 12:05 عصر
دوستان لطفاً یه نگاهی به قسمت سربار گذاری عملگر + بندازید آخه به نظر خودم درسته ولی نتایج اون چیزی که انتظار دارم نمیشه منتظرم

بانوی ایران
شنبه 05 دی 1388, 15:58 عصر
سلام من cppبلد نيستم و راجع به case"+" نميدونم
ولي system ("pause") نبايد ايراد بگيره ولي اگر نميشه از
()getch استفاده كن

icepak
پنج شنبه 25 آذر 1389, 11:39 صبح
میشه همین برنامه رو با لیست پیوندی یک طرفه بنویسین ؟ البته تا امروز عصر .

yaseriran
جمعه 26 آذر 1389, 12:22 عصر
درود!


میشه همین برنامه رو با لیست پیوندی یک طرفه بنویسین ؟ البته تا امروز عصر .

// Adding two polynomials
#include<iostream.h>
#include<conio.h>
class node
{ public:
int coe,exp;
node *next;
};
class polynomial
{
public:
void get_poly();
void show();
void add(polynomial p1,polynomial p2);
node *start,*ptrn,*ptrp;
};
void polynomial::get_poly() // Get Polynomial
{
char c='y';
ptrn=ptrp=start=NULL;
while(c=='y' || c=='Y')
{
ptrn=new node;
ptrp->next=ptrn;
if(start==NULL)
start=ptrn;
ptrp=ptrn;
cout<<" Coefficient: ";
cin>>ptrn->coe;
cout<<" Exponent: ";
cin>>ptrn->exp;
ptrn->next=NULL;
cout<<"Do you want to add ?(y/n):";
cin>>c;
}
}
void polynomial::show() // Show Polynomial
{
node *ptr;
ptr=start;
while(ptr!=NULL)
{
cout<<ptr->coe<<"X^"<<ptr->exp<<" + ";
ptr=ptr->next;
}
}
void polynomial::add(polynomial p1,polynomial p2) // Add Polynomials
{
node *p1ptr,*p2ptr;
int coe,exp;
ptrn=ptrp=start=NULL;
p1ptr=p1.start;
p2ptr=p2.start;
while(p1ptr!=NULL && p2ptr!=NULL)
{
if(p1ptr->exp==p2ptr->exp) // If coefficients are equal
{
coe=p1ptr->coe+p2ptr->coe;
exp=p1ptr->exp;
p1ptr=p1ptr->next;
p2ptr=p2ptr->next;
}
else if(p1ptr->exp > p2ptr->exp)
{
coe=p1ptr->coe;
exp=p1ptr->exp;
p1ptr=p1ptr->next;
}
else if(p1ptr->exp < p2ptr->exp)
{
coe=p2ptr->coe;
exp=p2ptr->exp;
p2ptr=p2ptr->next;
}
ptrn=new node;
if(start==NULL)
start=ptrn;
ptrn->coe=coe;
ptrn->exp=exp;
ptrn->next=NULL;
ptrp->next=ptrn;
ptrp=ptrn;
} // End of While
if(p1ptr==NULL)
{
while(p2ptr!=NULL)
{
coe=p2ptr->coe;
exp=p2ptr->exp;
p2ptr=p2ptr->next;
ptrn=new node;
if(start==NULL)
start=ptrn;
ptrn->coe=coe;
ptrn->exp=exp;
ptrn->next=NULL;
ptrp->next=ptrn;
ptrp=ptrn;
}
}
else if(p2ptr==NULL)
{
while(p1ptr!=NULL)
{
coe=p1ptr->coe;
exp=p1ptr->exp;
p1ptr=p1ptr->next;
ptrn=new node;
if(start==NULL)
start=ptrn;
ptrn->coe=coe;
ptrn->exp=exp;
ptrn->next=NULL;
ptrp->next=ptrn;
ptrp=ptrn;
}
}
}
int main()
{
polynomial p1,p2,sum;
clrscr();
cout<<"First Polynomial:\n";
p1.get_poly();
cout<<"Second polynomial:\n";
p2.get_poly();
cout<<"The First polynomial is: \n";
p1.show();
cout<<"\n The second polynomial is: \n";
p2.show();
cout<<"\n The sum of two polynomials is:\n ";
sum.add(p1,p2);
sum.show();
getch();
return 0;
}


آتش عشق تو در جان خوشتر است* جان زعشقت آتش افشان خوشتر است
هر که خورد از جام عشقت قطره ای* تا قیامت مست و حیران خوشتر است...