ارور عجیب در اینکلود کردن مت دات ایچ
در کد شماره یک برای کاری ساده تابع 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);
}
اسمایلی نیازمند کمک
نقل قول: ارور عجیب در اینکلود کردن مت دات ایچ
ارور برنامه فقط برای math.h هستش چون این کلاس رو قبلا نوشته بودم فقط خواستم لوکال ترش کنم و کامل تر math.h رو اضاف کردم و کل کلاسم رو بهم ریخت
خوشحال می شم اگر کسی کمکم کنه
نقل قول: ارور عجیب در اینکلود کردن مت دات ایچ
این خطا به دلیل این است که شما از عنوان poly برای کلاس خود استفاده کرده اید در حالی که poly یکی از توابع ریاضی موجود در math.h است که البته استاندارد نیست و در Borland هست .
پس برای حل آن یک اسم دیگری انتخاب کنید و سعی کنید همواره اسم مورد نظر دارای حروف بزرگ و متفاوت از سایر توابع عمومی باشد.
کامپایلر شما C++builder هست ؟ چه نسخه ای ؟
نقل قول: ارور عجیب در اینکلود کردن مت دات ایچ
با تشکر بسیار زیاد
turbo C++ 4.5 هستش