首页 > 试题广场 >

完成下面的编程练习,但将Sales结构及相关的函数转换为一个

[问答题]
完成下面的编程练习,但将Sales结构及相关的函数转换为一个类及其方法。用构造函数替换setSales (sales &, double [ ], int)函数。用构造函数实现setSales (Sales &)方法的交互版本。将类保留在名称空间SALES中。
编程练习:请基于下面这个名称空间编写一个由3个文件组成的程序:
namespace SALES
{
         const int QUARTERS = 4;
         struct Sales
         {
                double sales(QUARTERS);
                double average;
                double max;
                double min;
          };
          // copies the lesser of 4 or n items from the array ar
          // to the sales member of s and computes and stores the
          // average, maximum, and minimum values of the entered items;
          //remaining elements of sales, if any, set to 0
          void setSales(Sales & s, const double ar[], int n);
          // gathers sales for 4 quarters interactively, strores them
          // in the sales member of s and computes and stores the
          // average, maximum, and minimum values
          void setSales(Sales & s);
          // display all information in structure s
          void showSales(const Sales & s);
}
第一个文件是头文件,其中包含名称空间;第二个文件是源代码文件,它对这个名称空间进行扩展,以提供这三个函数的定义;第三个文件声明两个Sales对象,并使用setSales()的交互式版本为一个结构提供值,然后使用setSales()的非交互式版本为另一个结构提供值。另外它还使用showSales()来显示这两个结构的内容。
#include <iostream>
using namespace std;
const int QUARTERS=4;
class Sales
{
public:
	Sales();
	Sales(const double ar[],int n);
	void showsales() const;

private:
	double sales[QUARTERS];
	double average;
	double min;
	double max;
};

Sales::Sales(const double ar[],int n)
{
	double sum=0;
	if (n>QUARTERS)
	{
		for (int i = 0; i < QUARTERS; i++)
		{
			sales[i]=ar[i];
		}
	}
	else
	{
		for (int i = 0; i < n; i++)
		{
			sales[i]=ar[i];
		}
		for (int i = n; i < QUARTERS; i++)
		{
			sales[i]=0;
		}
	}
	max=min=sales[0];
	for (int i = 0; i < QUARTERS; i++)
	{
		sum=sum+sales[i];
		if(sales[i]>max) max=sales[i];
		if(sales[i]<min) min=sales[i];
	}
	average=sum/QUARTERS;
}
Sales::Sales()
{
	int i=0;
	double sum=0;
	cout<<"Enter a number: "<<endl;
	while (i<QUARTERS)
	{
		if(!(cin>>sales[i]))
		{
			cin.clear();
			while(cin.get()!='\n') continue;
			cout<<"Error,Reenter a number:";
			cin>>sales[i];
		}
		i++;
	}
	max=min=sales[0];
	for (int i = 0; i < QUARTERS; i++)
	{
		sum=sum+sales[i];
		if(sales[i]>max) max=sales[i];
		if(sales[i]<min) min=sales[i];
	}
	average=sum/QUARTERS;
}
void Sales::showsales() const
{
	cout<<"This sales's quarter list info:"<<endl;
	for (int i = 0; i < QUARTERS; i++)
	{
		cout<<"No."<<i+1<<":sales:"<<sales[i]<<endl;
	}
	cout<<"AVERAGE:"<<average<<endl;
	cout<<"MAX:"<<max<<endl;
	cout<<"MIN:"<<min<<endl;
}
int main()
{
	double de[QUARTERS]={12,23,45,67};
	Sales s1(de,QUARTERS);
	Sales s2;
	s1.showsales();
	s2.showsales();
	system("pause");
	return 0;
}

发表于 2021-03-09 17:02:39 回复(0)