m0_65927597 2021-12-30 09:54 采纳率: 100%
浏览 82
已结题

这个问题咋搞,c++的

某公司从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)查找最大销售额对应的年份和月份。

  • 写回答

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);
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 创建了问题 12月30日

悬赏问题

  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 组策略中的计算机配置策略无法下发
  • ¥15 如何绘制动力学系统的相图
  • ¥15 对接wps接口实现获取元数据
  • ¥20 给自己本科IT专业毕业的妹m找个实习工作
  • ¥15 用友U8:向一个无法连接的网络尝试了一个套接字操作,如何解决?
  • ¥30 我的代码按理说完成了模型的搭建、训练、验证测试等工作(标签-网络|关键词-变化检测)