Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 构建包含10个元素的数组 尝试用一个包含10个元素的数组构建一个程序,并对其进行初始化,得到这些数字的最大值、最小值、平均值和总和。把结果打印出来 通过使用气泡排序算法或其他排序算法,构建一个函数以升序对其进行排序。把结果打印出来 将上述代码修改为OOP风格:构建一个类,将上述所有函数集成到该类中。制作一个或两个对象以打印结果_C++_Arrays_Algorithm_Sorting - Fatal编程技术网

C++ 构建包含10个元素的数组 尝试用一个包含10个元素的数组构建一个程序,并对其进行初始化,得到这些数字的最大值、最小值、平均值和总和。把结果打印出来 通过使用气泡排序算法或其他排序算法,构建一个函数以升序对其进行排序。把结果打印出来 将上述代码修改为OOP风格:构建一个类,将上述所有函数集成到该类中。制作一个或两个对象以打印结果

C++ 构建包含10个元素的数组 尝试用一个包含10个元素的数组构建一个程序,并对其进行初始化,得到这些数字的最大值、最小值、平均值和总和。把结果打印出来 通过使用气泡排序算法或其他排序算法,构建一个函数以升序对其进行排序。把结果打印出来 将上述代码修改为OOP风格:构建一个类,将上述所有函数集成到该类中。制作一个或两个对象以打印结果,c++,arrays,algorithm,sorting,C++,Arrays,Algorithm,Sorting,这是我对这个问题的尝试: #include "stdafx.h" #include <iostream> using namespace std; void bubble_sorting(int a1[]); int _tmain(int argc, _TCHAR* argv[]) { int size=10; int data[100]={11, 13, 15, 17, 19, 20, 18, 16, 14, 12}; int min, max, avg,

这是我对这个问题的尝试:

#include "stdafx.h"
#include <iostream>
using namespace std;
void bubble_sorting(int a1[]);
int _tmain(int argc, _TCHAR* argv[])
{
    int size=10;
    int data[100]={11, 13, 15, 17, 19, 20, 18, 16, 14, 12};
    int min, max, avg, sum;
//  cout<<"Enter the array size:"<<endl;
//  cin>>size;
    for(int i1=0;i1<size;i1++)
    {
//     cin>>data[i1];
//      data[i1]=rand();
       if(i1==0)
       {
          min=data[i1];
          max=data[i1];
          sum=data[i1];
       }
       else
       {
          if(data[i1]<min)min=data[i1];    
          if(data[i1]>max)max=data[i1];
          sum=sum+data[i1];
       }
    } 
    cout<<"The Min number is:"<<min<<endl;
    cout<<"The Max number is:"<<max<<endl;
    cout<<"The average number is:"<<sum/size<<endl;
    cout<<"The sum number is:"<<sum<<endl;
    bubble_sorting(data);
    return 0;
}

void bubble_sorting(int a1[])
{

      int i2;
      int t1;
      for(int i1=0;i1<10;i1++)
      {
           i2=1;
           for(i2=1;i2<10;i2++)
           {
               if(a1[i2]<a1[i2-1])
               {
                   t1=a1[i2];
                   a1[i2]=a1[i2-1];
                   a1[i2-1]=t1;
               }

           } 

      }
      cout<<"The data after sorting is:"<<endl;
      for(int i1=0;i1<10;i1++)
      {
          cout<<a1[i1]<<" ";
      } 
      cout<<endl;
}
#包括“stdafx.h”
#包括
使用名称空间std;
无效气泡_排序(int a1[]);
int _tmain(int argc,_TCHAR*argv[]
{
int size=10;
int data[100]={11,13,15,17,19,20,18,16,14,12};
最小值、最大值、平均值、和;

//cout由于您已经对问题的前两部分(即实现统计和冒泡排序)进行了公平的处理,下面是对第三部分的一些帮助:

  • 将排序和统计数据移动到1或2个类中。我一直很懒惰,只实现了一个类,尽管更准确地说,排序和确定基本统计数据的关注点可以分为2个类(SRP of SOLID)
  • 将数据移动到类的字段中,并通过
    get
    /
    set
    方法将这些字段作为属性公开
  • 将排序等功能公开为方法
  • 通常,使用STL模板类存储集合,例如
    vector
  • 根据建议的Wiki文章,对冒泡排序进行了优化
其他要点

  • 尽快初始化聚合(
    sum、avg、min、max
    ),而不是在循环中的分支中
  • 尽量不要硬编码常量,例如数组的大小,尤其不要在多个位置重复该常量-这会使代码容易更改。对于
    向量
    ,大小是集合的固有属性
  • 平均值不能是
    int

#包括“stdafx.h”
#包括
#包括
使用名称空间std;
类气泡排序器
{
公众:
气泡排序器(常量向量和未排序数)
:_min(INT_MAX),_MAX(INT_min),_sum(0)
{
_数字=未排序的数字;
calculateStats();
}
int getMin()
{
返回_min;
}
int getMax()
{
返回_max;
}
int getSum()
{
返回(u)和;;
}
双getAvg()
{
返回平均值;
}
常量向量&getNumbers()
{
返回(u)号码;;
}
void bubbleSort()
{
int n=_numbers.size();
布尔交换;
做
{
交换=假;
对于(向量::大小\类型i=1;i_最大值)
_max=_个数[i];
_总和=_总和+_数[i];
} 
_平均值=(双精度)_sum/_numbers.size();
}
};
int _tmain(int argc,_TCHAR*argv[]
{
int data[]={11,13,15,17,19,20,18,16,14,12};
未排序的向量(开始(数据),结束(数据));
气泡分拣机分拣机(未分拣);

你的问题是?你能添加你的问题吗?构建冒泡排序的最佳方法是什么?我想你会发现,在维基百科中检查冒泡排序将产生关于如何“构建”的非常强烈的建议它。我故意没有在这篇评论中提供到维基百科的链接。自己查找维基百科是一个很好的第一次学习练习。你发布了代码,但没有告诉我们它有什么问题。你的代码看起来像是在尝试进行冒泡排序,但你问如何进行排序,所以我们有点困惑,这是可以理解的。它不会编译吗?D它是否崩溃/引发异常?它是否产生错误的输出?在任何情况下,请尽可能详细地描述问题。除此之外,您可能会在网上找到大量冒泡排序的实现,因此通过将代码与其他实现进行比较,遇到的任何运行时问题都应该很容易解决在上,或只是逐步通过您的代码。非常感谢您的支持!
#include "stdafx.h"
#include <iostream>
#include <vector>

using namespace std;

class BubbleSorter
{
public:
    BubbleSorter(const vector<int>& unsortedNumbers)
        : _min(INT_MAX), _max(INT_MIN), _sum(0)
    {
        _numbers = unsortedNumbers;
        calculateStats();
    }

    int getMin()
    {
        return _min;
    }
    int getMax()
    {
        return _max;
    }
    int getSum()
    {
        return _sum;
    }
    double getAvg()
    {
        return _avg;
    }
    const vector<int>& getNumbers()
    {
        return _numbers;
    }

    void bubbleSort()
    {
        int n = _numbers.size();
        bool swapped;
        do
        {
            swapped = false;
            for(vector<int>::size_type i = 1; i < n; i++)
            {
                if(_numbers[i] < _numbers[i-1])
                {
                    int t1=_numbers[i];
                    _numbers[i]=_numbers[i-1];
                    _numbers[i-1]=t1;
                    swapped = true;
                }
            } 
        } while (swapped);
    }

private:
    vector<int> _numbers;
    int _min, _max, _sum;
    double _avg; // not int!

    void calculateStats()
    {
        for(vector<int>::size_type i = 0; i < _numbers.size(); i++)
        {
            if(_numbers[i] < _min)
                _min = _numbers[i];    
            if(_numbers[i] > _max)
                _max=_numbers[i];
            _sum = _sum + _numbers[i];
        } 
        _avg = (double)_sum/_numbers.size();
    }
};

int _tmain(int argc, _TCHAR* argv[])
{
    int data[] = {11, 13, 15, 17, 19, 20, 18, 16, 14, 12};
    vector<int> unsorted(begin(data), end(data));
    BubbleSorter sorter(unsorted);

    cout << "The Min number is:" << sorter.getMin() << endl;
    cout << "The Max number is:" << sorter.getMax() << endl;
    cout << "The average number is:"<< sorter.getAvg() <<endl;
    cout << "The sum of numbers is:" << sorter.getSum() <<endl;

    sorter.bubbleSort();

    cout<<"The data after sorting is:"<<endl;

    vector<int> sorted = sorter.getNumbers();
    for(int i=0; i < sorted.size(); i++)
    {
        cout << sorted[i] << " ";
    } 
    cout << endl;

    return 0;
}