再求一道c++题目 跪求答案
设计要求本课程设计仍然使用一个头文件和一个源文件的编写方法,以便进一步巩固头文件的设计方法并熟悉编程环境及规范。假设有一个点类point,具有两个实数坐标。希望主程序使用...
设计要求
本课程设计仍然使用一个头文件和一个源文件的编写方法,以便进一步巩固头文件的设计方法并熟悉编程环境及规范。
假设有一个点类point,具有两个实数坐标。希望主程序使用这个类完成下述功能:
1) 主程序为类point申请10个连续存储空间。
2) 要求调用一个函数从键盘输入10个对象的属性,并顺序存入申请的内存中。
3) 要求调用一个函数显示10个对象的值。
4) 要求调用一个函数,计算将这些点连成一条折线时,这条折线的长度。
5) 程序结束时,删除申请的内存。
6) 演示析构对象的顺序。
设计这个类和各个函数并验证运算结果的正确性 展开
本课程设计仍然使用一个头文件和一个源文件的编写方法,以便进一步巩固头文件的设计方法并熟悉编程环境及规范。
假设有一个点类point,具有两个实数坐标。希望主程序使用这个类完成下述功能:
1) 主程序为类point申请10个连续存储空间。
2) 要求调用一个函数从键盘输入10个对象的属性,并顺序存入申请的内存中。
3) 要求调用一个函数显示10个对象的值。
4) 要求调用一个函数,计算将这些点连成一条折线时,这条折线的长度。
5) 程序结束时,删除申请的内存。
6) 演示析构对象的顺序。
设计这个类和各个函数并验证运算结果的正确性 展开
1个回答
展开全部
# include <iostream>
# include <cmath>
using namespace std;
class point
{
private:
double x,y;
public:
point(double a=0,double b=0);
double getx()
{return x;};
double gety()
{return y;};
void setxy(double,double);
~point();
};
point::point(double a,double b)
{x=a;y=b;}
void point::setxy(double a,double b)
{x=a;y=b;}
point::~point()
{cout<<"delete it:"<<x<<","<<y<<endl;}
const int num=10;
void set(point *);
void display(point *);
double lenth(point *);
int main()
{
point *p=new point[10];
if(p==NULL)
{
cout<<"地址申请失败,结束程序运行。\n";
return 0;
}
set(p);
cout<<"内存块的数据如下:"<<endl;
display(p);
cout<<"组成的折现长度为:";
cout<<lenth(p)<<endl;
delete []p;
system("pause");
return 0;
}
void set(point *p)
{
double a,b;
for(int i=0;i<num;i++)
{
cout<<"输入第"<<i+1<<"个对象的两个数据成员的值:";
cin>>a>>b;
(p+i)->setxy(a,b);
}
}
void display(point *p)
{
for(int i=0;i<num;i++)
cout<<(p+i)->getx()<<","<<(p+i)->gety()<<endl;
}
double lenth(point *p)
{
double sum=0,a1,a2,b1,b2;
a1=p->getx();
b1=p->gety();
for(int i=1;i<num;i++)
{
a2=(p+i)->getx();
b2=(p+i)->gety();
sum+=sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));
a1=a2;b1=b2;
}
return sum;
}
# include <cmath>
using namespace std;
class point
{
private:
double x,y;
public:
point(double a=0,double b=0);
double getx()
{return x;};
double gety()
{return y;};
void setxy(double,double);
~point();
};
point::point(double a,double b)
{x=a;y=b;}
void point::setxy(double a,double b)
{x=a;y=b;}
point::~point()
{cout<<"delete it:"<<x<<","<<y<<endl;}
const int num=10;
void set(point *);
void display(point *);
double lenth(point *);
int main()
{
point *p=new point[10];
if(p==NULL)
{
cout<<"地址申请失败,结束程序运行。\n";
return 0;
}
set(p);
cout<<"内存块的数据如下:"<<endl;
display(p);
cout<<"组成的折现长度为:";
cout<<lenth(p)<<endl;
delete []p;
system("pause");
return 0;
}
void set(point *p)
{
double a,b;
for(int i=0;i<num;i++)
{
cout<<"输入第"<<i+1<<"个对象的两个数据成员的值:";
cin>>a>>b;
(p+i)->setxy(a,b);
}
}
void display(point *p)
{
for(int i=0;i<num;i++)
cout<<(p+i)->getx()<<","<<(p+i)->gety()<<endl;
}
double lenth(point *p)
{
double sum=0,a1,a2,b1,b2;
a1=p->getx();
b1=p->gety();
for(int i=1;i<num;i++)
{
a2=(p+i)->getx();
b2=(p+i)->gety();
sum+=sqrt((a1-a2)*(a1-a2)+(b1-b2)*(b1-b2));
a1=a2;b1=b2;
}
return sum;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询