c++,输入20个数和一个数据模式(All或Mst),若数据模式为All,则输出20个数的平均值,中位数,方差,标准差,极差;若模式为Mst,输出20个数去掉最大最小值后的平均数,中位数,方差,标准差,极差
时间: 2024-09-27 20:02:52 浏览: 43
在C++中,你可以创建一个程序来处理这种需求,首先,你需要定义一个函数来接收用户输入的20个数字和数据模式("All" 或 "Mst")。然后,根据模式计算并输出相应的统计量。
这里是一个简单的示例程序结构:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含sort算法
#include <cmath> // 包含计算方差、标准差的头文件
// 函数声明
void inputAndProcessNumbers(const std::string& mode, std::vector<int>& numbers);
double calculateMean(const std::vector<int>& numbers);
double calculateMedian(const std::vector<int>& numbers);
double calculateVariance(const std::vector<int>& numbers);
double calculateStandardDeviation(const std::vector<int>& numbers);
double calculateRange(const std::vector<int>& numbers);
int main() {
std::vector<int> numbers;
std::string mode;
// 用户输入部分
for (int i = 0; i < 20; ++i) {
int number;
std::cout << "请输入第 " << i+1 << " 个数:";
std::cin >> number;
numbers.push_back(number);
}
std::cout << "请输入数据模式(All/Mst):";
std::cin >> mode;
// 调用处理函数
inputAndProcessNumbers(mode, numbers);
return 0;
}
// 函数实现
void inputAndProcessNumbers(const std::string& mode, std::vector<int>& numbers) {
if (mode == "All") {
double mean = calculateMean(numbers);
double median = calculateMedian(numbers);
double variance = calculateVariance(numbers);
double stdev = calculateStandardDeviation(numbers);
double range = calculateRange(numbers);
std::cout << "平均值: " << mean << "\n";
std::cout << "中位数: " << median << "\n";
std::cout << "方差: " << variance << "\n";
std::cout << "标准差: " << stdev << "\n";
std::cout << "极差: " << range << "\n";
} else if (mode == "Mst") {
// 排序并去除最大值和最小值
std::sort(numbers.begin(), numbers.end());
numbers.erase(numbers.begin()); // 移除最小值
numbers.pop_back(); // 移除最大值
double reducedMean = calculateMean(numbers);
double reducedMedian = calculateMedian(numbers);
double reducedVariance = calculateVariance(numbers);
double reducedStdev = calculateStandardDeviation(numbers);
double reducedRange = calculateRange(numbers);
std::cout << "去最大最小后的平均值: " << reducedMean << "\n";
std::cout << "去最大最小后的中位数: " << reducedMedian << "\n";
std::cout << "去最大最小后的方差: " << reducedVariance << "\n";
std::cout << "去最大最小后的标准差: " << reducedStdev << "\n";
std::cout << "去最大最小后的极差: " << reducedRange << "\n";
} else {
std::cerr << "无效的数据模式!" << std::endl;
}
}
// 辅助计算函数
double calculateMean(const std::vector<int>& numbers) { return accumulate(numbers.begin(), numbers.end(), 0) / numbers.size(); }
// ...其他函数类似,这里省略了计算中位数、方差、标准差和极差的具体实现,它们通常涉及到更复杂的数学公式。
```
阅读全文