ورود

View Full Version : سوال: ارور عجیب در اینکلود کردن مت دات ایچ



amirali_asp_net
جمعه 29 آذر 1387, 17:46 عصر
در کد شماره یک برای کاری ساده تابع pow نیاز است اما زمانی که math.h را اینکلود می کنم کل برنامه ایراد پیدا می کند امتحان کردم فقط بعد از اینکلود math.h این مشکل بوجود میاید

کد بدون math.h




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






class poly
{
private:
int n;
float a[100];
public:
void get();
void put();
poly(int=0);
poly operator+(poly);
poly operator-(poly);
poly operator*(poly);
float val(float);
};

void poly::get()
{
cout<<"\nEnter degree: ";
cin>>n;
if(n<0) n=0;
if(n>100) n=100;
int i;
for(i=0;i<n;i++)
{
cout<<"\nEnter"<<i<<"'th coefficient: ";
cin>>a[i];
}
}

void poly::put()
{
int i;
cout<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<"x^"<<i<<"+";
}

poly poly::operator+(poly b)
{
poly s;
s.n=(n>b.n)?(n):(b.n);
int i;
if(s.n==n)
for(i=b.n;i<s.n;i++)
b.a[i]=0;
else
for(i=n;i<s.n;i++)
a[i]=0;
for(i=0;i<s.n;i++)
s.a[i]=a[i]+b.a[i];
return s;
}

poly poly::operator-(poly b)
{
poly s;
s.n=(n>b.n)?(n):(b.n);
int i;
for(i=0;i<s.n;i++)
s.a[i]=a[i]-b.a[i];
return s;
}

poly::poly(int h)
{
int i;
n=h;
for(i=0;i<h;i++)
a[i]=0;
}

poly poly::operator*(poly b)
{
poly s(n+b.n-1);
int i,j;
for(i=0;i<n;i++)
for(j=0;j<b.n;j++)
s.a[i+j]+=a[i]*b.a[j];
return s;
}

///meghdar ezafe shode barnameh

float poly::val(float value)
{

int j = 0;
float answer=0;

for(j=0;j<n;j++)
{
answer +=(a[j] * (pow(value,j)) );
}

return answer;
}

void main ()
{
poly a,b,c,d;
a.get();
a.put();
b.get();
b.put();
c=a+b;
c.put();
d=a*b;
d.put();
getch();

poly javab;
javab.get();
javab.put();
float matloob;
cin >> matloob;

cout << "\n"<<javab.val(matloob);

}


کد با math.h




#include <iostream.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>





class poly
{
private:
int n;
float a[100];
public:
void get();
void put();
poly(int=0);
poly operator+(poly);
poly operator-(poly);
poly operator*(poly);
float val(float);
};

void poly::get()
{
cout<<"\nEnter degree: ";
cin>>n;
if(n<0) n=0;
if(n>100) n=100;
int i;
for(i=0;i<n;i++)
{
cout<<"\nEnter"<<i<<"'th coefficient: ";
cin>>a[i];
}
}

void poly::put()
{
int i;
cout<<endl;
for(i=0;i<n;i++)
cout<<a[i]<<"x^"<<i<<"+";
}

poly poly::operator+(poly b)
{
poly s;
s.n=(n>b.n)?(n):(b.n);
int i;
if(s.n==n)
for(i=b.n;i<s.n;i++)
b.a[i]=0;
else
for(i=n;i<s.n;i++)
a[i]=0;
for(i=0;i<s.n;i++)
s.a[i]=a[i]+b.a[i];
return s;
}

poly poly::operator-(poly b)
{
poly s;
s.n=(n>b.n)?(n):(b.n);
int i;
for(i=0;i<s.n;i++)
s.a[i]=a[i]-b.a[i];
return s;
}

poly::poly(int h)
{
int i;
n=h;
for(i=0;i<h;i++)
a[i]=0;
}

poly poly::operator*(poly b)
{
poly s(n+b.n-1);
int i,j;
for(i=0;i<n;i++)
for(j=0;j<b.n;j++)
s.a[i+j]+=a[i]*b.a[j];
return s;
}

///meghdar ezafe shode barnameh

float poly::val(float value)
{

int j = 0;
float answer=0;

for(j=0;j<n;j++)
{
answer +=(a[j] * (pow(value,j)) );
}

return answer;
}

void main ()
{
poly a,b,c,d;
a.get();
a.put();
b.get();
b.put();
c=a+b;
c.put();
d=a*b;
d.put();
getch();

poly javab;
javab.get();
javab.put();
float matloob;
cin >> matloob;

cout << "\n"<<javab.val(matloob);

}


اسمایلی نیازمند کمک

amirali_asp_net
شنبه 30 آذر 1387, 16:55 عصر
ارور برنامه فقط برای math.h هستش چون این کلاس رو قبلا نوشته بودم فقط خواستم لوکال ترش کنم و کامل تر math.h رو اضاف کردم و کل کلاسم رو بهم ریخت

خوشحال می شم اگر کسی کمکم کنه

Nima_NF
شنبه 30 آذر 1387, 18:05 عصر
این خطا به دلیل این است که شما از عنوان poly برای کلاس خود استفاده کرده اید در حالی که poly یکی از توابع ریاضی موجود در math.h است که البته استاندارد نیست و در Borland هست .
پس برای حل آن یک اسم دیگری انتخاب کنید و سعی کنید همواره اسم مورد نظر دارای حروف بزرگ و متفاوت از سایر توابع عمومی باشد.

کامپایلر شما C++builder هست ؟ چه نسخه ای ؟

amirali_asp_net
یک شنبه 01 دی 1387, 12:40 عصر
با تشکر بسیار زیاد

turbo C++ 4.5 هستش