查找最小值、最大值、平均值、中值和模式的程序 背景 编写一个C++程序,该程序使用用户输入一组数字,并输出最大值、最小值、平均值、中值和模式。我们知道模式可以是多个数字,所以编写代码,以便在必要时输出多个模式 样本输入

查找最小值、最大值、平均值、中值和模式的程序 背景 编写一个C++程序,该程序使用用户输入一组数字,并输出最大值、最小值、平均值、中值和模式。我们知道模式可以是多个数字,所以编写代码,以便在必要时输出多个模式 样本输入,c++,max,min,mode,median,C++,Max,Min,Mode,Median,输入整数,完成后输入字母 -2 3 3 5 6 4 4 8 9 9 9 1 -2 10 10 10 样本输出 我的代码 #包括 使用名称空间std; void main() { 双值,求和; 双倍平均值,最小值,最大值; 整数计数; //初始化 总和=0.0; 计数=0; cout>值; 最小值=最小值; 最大值=最大值; 而(值>=0.0) { //过程值 总和+=数值; 计数++; 如果(值>最大值) 最大值=最大值; 否则如果(值值; } 如果(计数=0) cout如果您想使用STL,可

输入整数,完成后输入字母

-2 3 3 5 6 4 4 8 9 9 9 1 -2 10 10 10
样本输出 我的代码
#包括
使用名称空间std;
void main()
{
双值,求和;
双倍平均值,最小值,最大值;
整数计数;
//初始化
总和=0.0;
计数=0;
cout>值;
最小值=最小值;
最大值=最大值;
而(值>=0.0)
{
//过程值
总和+=数值;
计数++;
如果(值>最大值)
最大值=最大值;
否则如果(值<最小值)
最小值=最小值;
//获取下一个值
cout>值;
}
如果(计数=0)

cout如果您想使用STL,可以编写如下内容(使用c++11):

#包括
#包括
#包括
#包括
#包括
#包括
#包括
模板
标准::对翻转对(常数标准::对和对)
{
返回std::pair(p.second,p.first);
}
模板
标准::多重映射翻转映射(常量标准::映射和src)
{
std::多映射dst;
std::transform(src.begin(),src.end(),std::inserter(dst,dst.begin()),
翻转(U对);
返回dst;
}
int main(){
std::字符串行;

std::cout以下代码是您的代码的编辑版本,完全可以工作:

#包括
#包括
#包括
#包括
使用名称空间std;
int main()
{
双值,求和;
双平均值,最小值=(双)无穷大,最大值=-(双)无穷大,中间值;
地图模式;
矢量数据;
整数计数,mxmode=0;
//初始化
总和=0.0;
计数=0;
cout>值)
{
//过程值
总和+=数值;
计数++;
如果(值>最大值)
最大值=最大值;
如果(值<最小值)
最小值=最小值;
模式[值]+;
mxmode=最大值(mxmode,模式[值]);
数据。推回(值);
//获取下一个值
cout中位数:

首先,您需要对数字进行排序。您可以将数字存储在数组中,然后使用排序算法,例如插入排序、选择排序等。一旦对数组进行排序,中位数就是中间数字。下面是插入排序实现的代码,假设您已将数字存储在
arr[]
length
是数组的长度

    void insertion_sort(double arr[], int length) {
      int i, j;
      double tmp; 
      for (i = 1; i < length; i++) {
        j = i;
        while (j > 0 && arr[j - 1] > arr[j]) {
          tmp = arr[j];
          arr[j] = arr[j - 1];
          arr[j - 1] = tmp;
          j--;
        }//end of while loop
        print_array(arr,5);
      }//end of for loop
    }//end of insertion_sort.
void插入\u排序(双arr[],整数长度){
int i,j;
双tmp;
对于(i=1;i0&&arr[j-1]>arr[j]){
tmp=arr[j];
arr[j]=arr[j-1];
arr[j-1]=tmp;
j--;
}//while循环结束
打印阵列(arr,5);
}//循环结束
}//插入和排序结束。
模式:


你可以用一个计数器来跟踪数组中的每个数字。最常见的是模式。

你有没有试过什么或给我们做作业?我试过什么,这是我的代码,到目前为止,它不允许我粘贴,因为它太长了。你需要做的不仅仅是在帖子中包含代码。你需要告诉我们的不仅仅是你的assignment是。例如,你到底遇到了什么问题,编译器或链接器错误,如果程序运行,你会得到什么输出,为什么会出错。我不知道如何计算中值,mode
,而(value>=0.0)
不允许你输入负数。你的排序复杂度为O(n^2),那么你为什么不使用内置排序?没错!但是,问题不在于复杂性。我只是举了一个例子,你可以使用任何你想要的排序。如果不考虑复杂性,那么你为什么要为新手使用复杂代码?
#include <iostream>
using namespace std;

void main()
{
    double value, sum;
    double average, minimum, maximum;
    int count;
    // initialise
    sum = 0.0;
    count = 0;
    cout << "Enter a value: ";
    cin >> value;
    minimum = value;
    maximum = value;
    while (value >= 0.0)
    {
        // process value
        sum += value;
        count++;
        if (value > maximum)
            maximum = value;
        else if (value < minimum)
            minimum = value;
        // get next value
        cout << "Enter a value: ";
        cin >> value;
    }
    if (count == 0)
        cout << "No data entry" << endl;
    else
    {
        average = sum / count;
        cout << "There were " << count << " numbers" << endl;
        cout << "Average was " << average << endl;
        cout << "Minimum was " << minimum << endl;
        cout << "Maximum was " << maximum << endl;
    }
}
#include <iostream>
#include <sstream>
#include <string>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
template<typename A, typename B>
std::pair<B,A> flip_pair(const std::pair<A,B> &p)
{
    return std::pair<B,A>(p.second, p.first);
}
template<typename A, typename B>
std::multimap<B,A> flip_map(const std::map<A,B> &src)
{
    std::multimap<B,A> dst;
    std::transform(src.begin(), src.end(), std::inserter(dst, dst.begin()), 
                   flip_pair<A,B>);
    return dst;
}
int main() {
  std::string line;
  std::cout << "Enter numbers: ";
  std::getline(std::cin, line);
  std::istringstream iss(line);
  std::vector<int> elements;
  elements.reserve(1000);
  std::string elem;
  while (std::getline(iss, elem, ' ')) {
    try {
      elements.push_back(std::stoi(elem));
    } catch (...) {  }
  }
  double sum = 0.0;
  std::size_t n = elements.size();
  std::sort(elements.begin(), elements.end());
  std::cout << "max=" << elements.back() << std::endl;
  std::cout << "min=" << elements.front() << std::endl;
  for (auto &x: elements) {
    sum += x;
  }
  if (n == 0) return 1;
  std::cout << "avg=" << sum / n << std::endl;
  if (n == 1) {
    std::cout << "med=" << elements[0] << std::endl;
  }
  else if (n % 2 == 0) {
    std::size_t i = n/2;
    std::cout << "med=" << (double)(elements[i] + elements[i-1]) / 2.0 << std::endl;
  }
  else {
    std::cout << "med=" << elements[n/2] << std::endl;
  }
  std::set<int> elements_set;
  for (auto &x: elements) {
    elements_set.insert(x);
  }
  std::map<int, std::size_t> elements_count;
  for (auto &x: elements_set) {
    elements_count.insert(std::pair<int, std::size_t>(x, std::count(elements.begin(), elements.end(), x)));
  }
  std::multimap<std::size_t, int> count_elements;
  count_elements = flip_map(elements_count);
  std::cout << "mod: ";
  std::size_t count_mod = count_elements.rbegin()->first;
  for (auto &x: count_elements) {
    if (x.first == count_mod) {
      std::cout << x.second << ", ";
    }
    else {  }
  }
  std::cout << "(" << count_mod << ")" << std::endl;
  return 0;
}
    void insertion_sort(double arr[], int length) {
      int i, j;
      double tmp; 
      for (i = 1; i < length; i++) {
        j = i;
        while (j > 0 && arr[j - 1] > arr[j]) {
          tmp = arr[j];
          arr[j] = arr[j - 1];
          arr[j - 1] = tmp;
          j--;
        }//end of while loop
        print_array(arr,5);
      }//end of for loop
    }//end of insertion_sort.