15、由一个已知一维数组派生出另一个一维数组的派生规则如下:新数组的每一元素等于原始数组的对应元素及其相邻两元素的平均值。其中第0个元素的左邻元素约定为最后一个元素,最后一个元素的右邻元素约定为第0个元素。假设原始数组为a[10],则b[0]=(a[9]+a[0]+a[1])/3,b[1]=(a[0]+a[1]+a[2])/3,b[2]=(a[1]+a[2]+a[3])/3,,b[9]=(a[8]+a[9]+a[0])/3。试建立一个实现此功能的类ARRAY。具体要求如下:
(1)私有数据成员
float a[10],b[10];a存放原始数组,b存放派生数组。
(2)公有成员函数
ARRAY(float t[10]):构造函数,初始化成员数组a;
void process():由数组a根据上述派生规则,用循环语句计算数组b的各元素;
void print():屏幕显示数组a和b。
(3)在主程序中对该类进行测试。使用测试数据{0,3,6,9,12,15,18,21,24,27}。
#include <iostream>
using namespace std;
class ARRAY
{
private:
float a[10], b[10];
public:
ARRAY(float t[10]);
void process();
void print();
};
ARRAY::ARRAY(float t[10])
{
for (int i = 0; i < 10; i++)
{
a[i] = t[i];
}
}
void ARRAY::process()
{
for (int i = 0; i < 10; i++)
{
if (i == 0)
{
b[0] = (a[9] + a[0] + a[1]) / 3;
}
else if (i == 9)
{
b[9] = (a[8] + a[9] + a[0]) / 3;
}
else
b[i] = (a[i - 1] + a[i] + a[i + 1]) / 3;
}
}
void ARRAY::print()
{
for (int i = 0; i < 10; i++)
{
cout << a[i] << '\t';
}
cout << endl;
for (int i = 0; i < 10; i++)
{
cout << b[i] << '\t';
}
cout << endl;
}
int main()
{
float m[10] = { 0,3,6,9,12,15,18,21,24,27 };
ARRAY arr(m);
arr.process();
arr.print();
system("pause");
return 0;
}

建立新数组达不到效果怎么改
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 浪客 2022-06-15 15:38关注
b[0]=(27+0+3)/3=10
b[1]=(0+3+6)/3=3
没看出有啥问题本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录