定义一个产品信息类(Product)

包括私有数据成员:产品品名称,产品价格,库存数量;完善该自定义类,根据需要增加
静态成员,和普通成员。
要求:1) 实现构造函数和析构函数。构造函数重载至少2次。
2) 在主函数中定义对象数组,定义对象
数组的同时要对数组元素初始化,且分别使用不同的构造函数重载完成对象的初始化。
3) 计算库存产品的总价值,并输出。
4)计算不同类型产品的均价,并输出种类数和均价。
提示:计算总价需要静态成员,自己设计增加。对象用不同的构成函数初始化时,如果对象使用了默认构造函数,就需要新的成员
函数完成对象值的修改。

基于Monster 组和GPT的调写:

#include <iostream>
#include <string>
using namespace std;

class Product {
private:
    string name;
    double price;
    int stock;
    static int total_stock;
    static double total_value;
public:
    Product() {
        name = "";
        price = 0;
        stock = 0;
    }
    Product(string n, double p, int s) {
        name = n;
        price = p;
        stock = s;
        total_stock += s;
        total_value += p * s;
    }
    Product(string n, double p) {
        name = n;
        price = p;
        stock = 0;
    }
    ~Product() {
        total_stock -= stock;
        total_value -= price * stock;
    }
    static int getTotalStock() {
        return total_stock;
    }
    static double getTotalValue() {
        return total_value;
    }
    double getValue() {
        return price * stock;
    }
    void addStock(int s) {
        stock += s;
        total_stock += s;
        total_value += price * s;
    }
    void sell(int s) {
        stock -= s;
        total_stock -= s;
        total_value -= price * s;
    }
    string getName() {
        return name;
    }
    double getPrice() {
        return price;
    }
    int getStock() {
        return stock;
    }
};

int Product::total_stock = 0;
double Product::total_value = 0;

int main() {
    Product products[4] = {
        Product("Apple", 5.0, 50),
        Product("Orange", 4.0, 30),
        Product("Banana", 2.0, 100),
        Product("Pineapple", 10.0)
    };
    products[3].addStock(20);

    double total_value = Product::getTotalValue();
    int total_stock = Product::getTotalStock();
    cout << "Total value of stock: " << total_value << endl;

    int count = 0;
    double sum = 0;
    for (int i = 0; i < 4; i++) {
        if (products[i].getStock() > 0) {
            count++;
            sum += products[i].getPrice();
        }
    }
    double average = sum / count;
    cout << "Average price of stock: " << average << endl;
    cout << "Number of products in stock: " << count << endl;

    return 0;
}


  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/329553
  • 除此之外, 这篇博客: 简单的桶排序:初级桶排序(1)中的 这是一个简单的桶排序,桶排序就是先开一个足够大的数组全部赋值为0表示一次都没有出现然后将数据输入,在输入的时候将数字对应的数组中的数据加一,表示出现了几次。注意:这个简单的桶排序需要知道排序的范围。当要排序的范围非常非常大的时候就不要用这个方法了,因为当排序范围非常大的时候这个方法就变得很浪费空间。而且这个简单的桶排序方法只是针对整数范围并且知道排序范围而且范围比较小的情况。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include<iostream>
    #include<stdio.h>
    using namespace std;
    
    int main(){
    	int num[1001] = {0},n,number;
    	cin>>n;			//输入数据的个数 
    	for(int i=0;i<n;i++){
    		cin>>number;
    		num[number]++;
    	}
    	//依次遍历从1000到0的桶 
    	for(int i=1000;i>0;i--){
    		for(int j=1;j<=num[i];j++){
    			cout<<i<<" ";			//出现了几次就打印几次 
    		} 
    	}
    	return 0; 
    }