PDA

View Full Version : سوال: نوشتن تابع read برای خواندن یک چند جمله ای بصورت رشته ای از ورودی



razi.sadeq
جمعه 11 تیر 1389, 16:30 عصر
سلام
دوست من برای پروژه پایان ترمش به یه مشکل بر خورده اونم اینه که باید یه تابع read تعریف کنه تا یک چند جمله ای رو بصورت رشته ای از ورودی بگیره توضیحاتش رو هم برام با عکس فرستاده ولی من چیزی نفهمیدم سورس برنامه هم برام فرستاده اگه میتونید راهنمایی کنید(توضیحات در بند b)

http://up.iranblog.com/Files/d3edd713c83f4a0a970a.jpg


#include "iostream"
using namespace std;
class polynomial
{
float a[100];
int len;
public:
polynomial()
{
for(int i=0;i<100;i++)
a[i]=0;
}
void read();
void print();
float power(float x,int y);
float evaluate(float x);
void operator*(float f);
void operator*(polynomial&p);
void operator+(polynomial&p);
void operator+(float f);
void operator--();
polynomial operator--(int);
void operator+=(polynomial&p);
void operator+=(float f);
int operator==(polynomial&p);
int operator!=(polynomial&p);
void operator*=(float f);
void operator*=(polynomial&p);
};
void polynomial::read()
{
cout<<"enter a len of arry =";
cin>>len;
for(int i=0;i<len;i++)
{
cout<<"enter a zarib x^"<<i<<"=";
cin>>a[i];
}
}
void polynomial::print()
{
for(int i=0;i<len;i++)
cout<<a[i]<<"x^"<<i<<"+";
cout<<"0";
cout<<"\n";
}
float polynomial::power(float x,int y)
{
int p=1;
for(int i=0;i<y;i++)
p*=x;
return p;
}
float polynomial::evaluate(float x)
{
float c=0;
for(int i=0;i<len;i++)
c+=a[i]*power(x,i);
return c;
}
void polynomial::operator*(float f)
{
float c[100]={0};
for(int i=0;i<len;i++)
c[i]=f*a[i];
cout<<"\n";
cout<<"p*f=";
for(int i=0;i<len;i++)
cout<<c[i]<<"x^"<<i<<"+";
cout<<"0";
}
void polynomial::operator*(polynomial&p)
{
float c[100]={0};
int j,i,t=len+p.len;
for(int i=0;i<len;i++)
for(j=0;j<p.len;j++)
c[i+j]=(a[i]*(p.a[j]))+c[i+j];
cout<<"\n";
cout<<"p2*p3=";
for(int l=0;l<t;l++)
cout<<c[l]<<"x^"<<l<<"+";
cout<<"0";

}
void polynomial::operator+(float f)
{
a[0]=f+a[0];
cout<<"\n";
cout<<"p+f=";
for(int i=0;i<len;i++)
cout<<a[i]<<"x^"<<i<<"+";
cout<<"0";
}
void polynomial::operator+(polynomial&p)
{
float c[100]={0};
int max;
max=len;
if(p.len>max)
max=p.len;
for(int i=0;i<max;i++)
c[i]=a[i]+p.a[i];
cout<<"\n";
cout<<"p2+p3=";
for(int i=0;i<max;i++)
cout<<c[i]<<"x^"<<i<<"+";
cout<<"0";
}
void polynomial::operator--()
{
float c[100]={0};
for(int i=0;i<len;i++)
if(a[i]!=0)
c[i]=a[i]-1;
cout<<"--p=";
for(int i=0;i<len;i++)
cout<<c[i]<<"x^"<<i<<"+";
cout<<"0";
}
polynomial polynomial::operator--(int)
{
float c[100]={0};
polynomial temp;
for(int i=0;i<len;i++)
temp.a[i]=a[i];
for(int i=0;i<len;i++)
if(a[i]!=0)
c[i]=a[i]-1;
return temp;
}
void polynomial::operator+=(polynomial&p)
{
int max;
max=len;
if(p.len>max)
max=p.len;
for(int i=0;i<max;i++)
a[i]+=p.a[i];
cout<<"p2+=p3=";
for(int i=0;i<max;i++)
cout<<a[i]<<"x^"<<i<<"+";
cout<<"0";
}
void polynomial::operator+=(float f)
{
a[0]+=f;
cout<<"\n p+f=";
for(int i=0;i<len;i++)
cout<<a[i]<<"x^"<<i<<"+";
cout<<"0";
}
int polynomial::operator==(polynomial&p)
{
int max;
max=len;
if(p.len>max)
max=p.len;
if(p.len!=len)
return -1;
else
for(int i=0;i<max;i++)
if(a[i]==p.a[i])
continue;
else
return -1;
return 0;
}
int polynomial::operator!=(polynomial&p)
{
int max;
max=len;
if(p.len>max)
max=p.len;
if(p.len!=len)
return 0;
else
for(int i=0;i<max;i++)
if(a[i]==p.a[i])
continue;
else
return 0;
return -1;
}
void polynomial::operator*=(float f)
{
for(int i=0;i<len;i++)
a[i]*=f;
for(int i=0;i<len;i++)
cout<<a[i]<<"x^"<<i<<"+";
cout<<"0";
}
void polynomial::operator *=(polynomial&p)
{
int c[100]={0},i,j,t=len+p.len;
for(int i=0;i<len;i++)
c[i]=0;
for(int i=0;i<len;i++)
for(int j=0;j<p.len;j++)
a[i+j]=0;
for(int i=0;i<len;i++)
for(int j=0;j<p.len;j++)
a[i+j]=c[i]*(p.a[j])+a[i+j];
for(int l=0;l<t;l++)
cout<<a[l]<<"x^"<<l<<"+";
cout<<"0";
}
int main()
{
int y;
float z,t,w;
polynomial p1(),p2,p3,p4,p5;
p3.read();
p2.read();
p3.print();
p2.print();
cout<<"\nenter a float number";
cin>>t;
z=p3.evaluate(t);
cout<<z;
w=p2.evaluate(t);
cout<<"\n"<<w;
p3*t;
cout<<"\n";
p2*t;
cout<<"\n";
p3*p2;
cout<<"\n";
p2+t;
p3+t;
p2+p3;
cout<<"\n";
--p3;
cout<<"\n";
--p2;
cout<<"\n";
p4=p3--;
cout<<"p3--= "; p4.print();
cout<<"\n";
p5=p2--;
cout<<"p2--= "; p5.print();
cout<<"\n";
p3+=p2;
cout<<"\n";
p3+=t;
p2+=t;
p2==p3;
if(p2==p3==0)
cout<<"chand jomlei is equal";
else
cout<<"chand jomlei is not equal";
p2!=p3;
if(p2!=p3==0)
cout<<"chand jomlei is not equal";
else
cout<<"chand jomlei is equal";
p3*=t;
p2*=t;
cout<<"\n";
p3*=p2;
return 0;
}

Salar Ashgi
جمعه 11 تیر 1389, 17:00 عصر
روشها برای گرفتن چند جمله ای زیاده ، مثلا یه نمونه :



#include <iostream>
#include <conio>
struct poly{
int coef;
int exp;};
//==============
int main(){
int term;
cout<<"Enter number of terms :\n";
cin>>term;
poly *a = new poly[term];
for(int i=0;i<term;i++){
cout<<"Enter coef "<<(i+1)<<":\n";
cin>>(a[i].coef);
cout<<"Enter exp "<<(i+1)<<":\n";
cin>>(a[i].exp);}
cout<<"======================\n";
for(int i=0;i<term;i++){
if(i!=term-1)
cout<<a[i].coef<<"X^"<<a[i].exp<<"+";
else
cout<<a[i].coef<<"X^"<<a[i].exp;}
getch();
}