题目:
请基于下面这个名称空间编写一个由3搁文件组成的程序:
namespace SALES
{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales & s,const double ar[],int n);
void setSales(Sales & s);
void showSales(const Sales & s);
}
第一个文件是头文件,其中包含了名称空间;第二个文件时一个源代码文件,它对这个名称空间进行扩展,以提供这三个函数的定义;第三个文件声明两个Sales对象,并使用setSales()的交互式版本为一个结构提供值,然后使用setSales()的非交互版本为另一个结构提供值。然后使用setSales()的非交互式版本为另一个结构提供值。另外它还使用showSales()来显式这两个结构的内容。
void setSales(Sales & s,const double ar[],int n)
将数组ar中的4个元素赋值到s的销售成员,并计算和存储输入项目的平均值、最大值和最小值;
void setSales(Sales & s)
以交互方式收集4个季度的销售额,将其存储在s的销售成员中,并计算和存储平均值、最大值和最小值
void showSales(const Sales & s)
显式结构的所有信息
源代码:
test.cpp
#include "test.h"
using namespace SALES;
int max = 0;
int main()
{
Sales ann;
Sales andy;
double sales[4] = { 1.2,3.3,4.5,6.7 };
setSales(ann, sales, 4);
setSales(andy);
showSales(ann);
showSales(andy);
return 0;
}
test_function.cpp
#include "test.h"
#include <iostream>
using namespace SALES;
using namespace std;
namespace SALES
{
void setSales(Sales& s, const double ar[], int n)
{
double total = 0;
s.max = s.min = ar[0];
for (int i = 0; i < n; i++)
{
s.sales[i] = ar[i];
if (s.max < ar[i])
s.max = ar[i];
else if (s.min > ar[i])
s.min = ar[i];
total += ar[i];
}
s.average = total / n;
}
void setSales(Sales& s)
{
double ar[4];
int n = 4;
cout << "请输入四个销售业绩: ";
for (int i = 0; i < n; i++)
{
cin >> ar[i];
}
int total = 0;
s.max = s.min = ar[0];
for (int i = 0; i < n; i++)
{
s.sales[i] = ar[i];
if (s.max < ar[i])
s.max = ar[i];
else if (s.min > ar[i])
s.min = ar[i];
total += ar[i];
}
s.average = total / n;
}
void showSales(const Sales& s)
{
cout << "销售业绩分别为: ";
for (int i = 0; i < 4; i++)
{
cout << s.sales[i] << " ";
}
cout << endl;
cout << "最大值: " << s.max << "最小值: " << s.min << "平均值: " << s.average << endl;
}
}
test.h
namespace SALES
{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales& s, const double ar[], int n);
void setSales(Sales& s);
void showSales(const Sales& s);
}
演示效果:
任务升级:将Sales结构及相关的函数转换为一个类及其方法。用构造函数替换void setSales(Sales & s,const double ar[],int n)函数。用构造函数实现void setSales(Sales & s)方法的交互版本。将类保留在名称空间SALES中
源代码:
test.h
namespace SALES
{
class Sales
{
private:
static const int QUARTERS = 4;
double sales[QUARTERS];
double average;
double max;
double min;
public:
void setSales(const double ar[], int n);
void setSales();
void showSales() const;
};
}
test.cpp
#include "test.h"
using namespace SALES;
int main()
{
Sales ann;
Sales andy;
double sales[4] = { 1.2,3.3,4.5,6.7 };
ann.setSales(sales, 4);
andy.setSales();
ann.showSales();
andy.showSales();
return 0;
}
test_function.cpp
演示效果:
#include "test.h"
#include <iostream>
using namespace std;
namespace SALES
{
void Sales::setSales(const double ar[], int n)
{
double total = 0;
this->max = this->min = ar[0];
for (int i = 0; i < n; i++)
{
this->sales[i] = ar[i];
if (this->max < ar[i])
this->max = ar[i];
else if (this->min > ar[i])
this->min = ar[i];
total += ar[i];
}
this->average = total / n;
}
void Sales::setSales()
{
double ar[4];
int n = 4;
cout << "请输入四个销售业绩: ";
for (int i = 0; i < n; i++)
{
cin >> ar[i];
}
int total = 0;
this->max = this->min = ar[0];
for (int i = 0; i < n; i++)
{
this->sales[i] = ar[i];
if (this->max < ar[i])
this->max = ar[i];
else if (this->min > ar[i])
this->min = ar[i];
total += ar[i];
}
this->average = total / n;
}
void Sales::showSales() const
{
cout << "销售业绩分别为: ";
for (int i = 0; i < 4; i++)
{
cout << this->sales[i] << " ";
}
cout << endl;
cout << "最大值: " << this->max << "最小值: " << this->min << "平均值: " << this->average << endl;
}
}
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈