某公司从2000年开始,连续三年的销售额如下:
double[][] revenues= {
{56.4, 69.4, 67.2, 65.6, 65.2, 64.4, 66.7, 67.4, 70.2, 70.4, 78.7, 79.4},
{76.2, 88.3, 87.5, 90.2, 85.9, 78.0, 88.4, 89.2, 88.4, 86.9, 86.3,90.4},
{95.3, 94.5, 90.2, 95.0, 97.2, 97.1, 95.1, 90.2, 95.3, 98.2, 92.3, 95.9}
};
请写使用函数按顺序完成以下功能:
1)分别计算三年的平均销售额,并得到一个新的三个元素的平均销售额数组。
2)获取平均销售额最高的哪个年度。
3)合并三个年度的销售额,得到一个一维的销售额数组。
4)统计各个销售额段的月份数。(50-60,60-70,70-80,80-90,90-100)。
5)根据给定的年份和月份,获取销售额。
6)查找最大销售额对应的年份和月份。
这个问题咋搞,c++的
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- stone_wangzx 2021-12-30 16:12关注
#include <iostream> using namespace std; const int MonthCount = 12;//每年月份数 double Revenues[][MonthCount] = { {56.4, 69.4, 67.2, 65.6, 65.2, 64.4, 66.7, 67.4, 70.2, 70.4, 78.7, 79.4}, {76.2, 88.3, 87.5, 90.2, 85.9, 78.0, 88.4, 89.2, 88.4, 86.9, 86.3, 90.4}, {95.3, 94.5, 90.2, 95.0, 97.2, 97.1, 95.1, 90.2, 95.3, 98.2, 92.3, 95.9}, }; const int StartYear = 2000;//起始年份 const int YearCount = sizeof(Revenues) / (MonthCount * sizeof(double));//年份数量 const int TotalMonthCount = YearCount * MonthCount;//总月份数量 //获取每年月平均销售额 void get_month_average(double* avg) { for (int i=0; i<YearCount; ++i) { double sum = 0; for (int j=0; j<MonthCount; ++j) { sum += Revenues[i][j]; } avg[i] = sum / MonthCount; } } //获取平均销售额最高的年份 int get_max_month_average_year(void) { double avg[YearCount]; get_month_average(avg); //查找最高的年份 double max = 0.0; int maxIndex = 0; for (int i=0; i<YearCount; ++i) { if (max < avg[i]) { max = avg[i]; maxIndex = i; } } return StartYear + maxIndex; } //合并三个年度销售额 void get_merge_data(double* merge) { for (int i=0; i<YearCount; ++i) { for (int j=0; j<MonthCount; ++j) { merge[i * MonthCount + j] = Revenues[i][j]; } } } //获取销售额段的月份数 int get_range_month(double minValue, double maxValue) { int count = 0; for (int i=0; i<YearCount; ++i) { for (int j=0; j<MonthCount; ++j) { if (Revenues[i][j] < maxValue && Revenues[i][j] >= minValue)//使用了左闭又开区间 { ++count; } } } return count; } //根据定的年份和月份获取销售额 double get_data(int year, int month) { do { if (year >= StartYear + YearCount || year < StartYear) { break; } if (month < 1 || month > 12) { break; } return Revenues[year - StartYear][month - 1]; } while (false); return 0.0f; } //查找最大销售额对应的年份和月份 void get_max_month(int& year, int& month) { double max_value = 0.0; int max_year = 0; int max_month = 0; for (int i = 0; i < YearCount; ++i) { for (int j = 0; j < MonthCount; ++j) { if (Revenues[i][j] > max_value) { max_year = i; max_month = j; max_value = Revenues[i][j]; } } } // year = StartYear + max_year; month = max_month + 1; } int main() { //获取每年月平均销售额 double avg[YearCount]; get_month_average(avg); for (int i=0; i<YearCount; ++i) { cout << "year = " << StartYear + i << " average = " << avg[i] << endl; } //获取平均销售额最高的年份 cout << "平均销售额最高的年份 = " << get_max_month_average_year() << endl; //合并三个年度销售额 double merge[TotalMonthCount]; get_merge_data(merge); for (int i=0; i<TotalMonthCount; ++i) { cout << merge[i] << " "; } cout << endl; //获取销售额段的月份数 double range[][2] = { {50.0, 60.0}, {60.0, 70.0}, {70.0, 80.0}, {80.0, 90.0}, {90.0, 100.0}, }; for (int i=0; i<sizeof(range) / 2 / sizeof(double); ++i) { cout << "[" << range[i][0] << ", " << range[i][1] << ") = " << get_range_month(range[i][0], range[i][1]) << endl; } //查找最大销售额对应的年份和月份 int year = 0, month = 0; get_max_month(year, month); cout << "最大销售额月份 = " << year << "-" << month; //根据定的年份和月份获取销售额 do { cout << "年份 = "; cin >> year; cout << "月份 = "; cin >> month; cout << year << "-" << month << " = " << get_data(year, month) << endl; } while (true); }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 公交车和无人机协同运输
- ¥15 stm32代码移植没反应
- ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
- ¥100 连续两帧图像高速减法
- ¥15 组策略中的计算机配置策略无法下发
- ¥15 如何绘制动力学系统的相图
- ¥15 对接wps接口实现获取元数据
- ¥20 给自己本科IT专业毕业的妹m找个实习工作
- ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
- ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)