如何在升序数组中添加所有值?

时间:2016-09-15 23:38:53

标签: c++ arrays conditional

首先,我需要将数组的所有值重新排列为升序,然后再添加。例如用户输入9 2 6,它将首先按升序显示(2 6 9)然后才会加上总和2 8 17 ..问题是我的升序无效,我的代码中有什么问题吗?

#include <iostream>
#include<conio.h>
using namespace std;
int numberof_array, value[10], temp;
int i = 0, j;
void input()
{

    cout << "Enter number of array:";
    cin >> numberof_array;
    for (i = 0; i < numberof_array; i++)
    {
        cout << "Enter value for array [" << i + 1 << "] - ";
        cin >> value[i];
        cout << endl;

    }
}
void computation()
{

// this is where i'll put all the computation
    for (j = 0; j < numberof_array; j++)
    {
        cout << value[j];
    }
    for (i = 0; i <= numberof_array; i++)
    {
        for (j = 0; j <= numberof_array - i; j++)
        {
            if (value[j] > value[j + 1])
            {
                temp = value[j];
                value[j] = value[j + 1];
                value[j + 1] = temp;
            }
        }
    }

}
void display()
{
// display all the computation i've got
    cout << "\nData after sorting: ";
    for (j = 0; j < numberof_array; j++)
    {
        cout << value[j];
    }
    getch();
}
int main()
{
    input();
    computation();
    display();
}

1 个答案:

答案 0 :(得分:0)

   void computation(){
    for (int j = 0; j < numberof_array; j++)  cout << value[j]<<"\t";

    for (int i = 0; i <= numberof_array; i++) {
        temp = value[i];
        int temp_idx = i;
        for (int j = i; j < numberof_array; j++) {
            if (value[j] < temp) {
                temp = value[j];
                temp_idx = j;
            }
        }
        int temp_swap = value[i];
        value[i] = value[temp_idx];
        value[temp_idx] = temp_swap;
    }
  }

如何将第二个功能更改为上述功能。

我必须同意其他评论员的观点,即您的编码风格并不是首选,但故事可能会超出眼睛的范围。