无法修复排序程序和复制数组?

时间:2017-07-27 09:29:53

标签: c++

我已启动的这个程序应该接收数据并对其进行排序然后输出。

我遇到的问题是,当我对代码进行排序并因某种原因输出时,前两个值变为0。我认为这是我的排序功能有问题,但我无法弄明白。我还想用"数据"复制值。到另一个阵列" sortedata"但我设置它的方式只是将所有值设置为零。有这两个问题的帮助吗?

如果你自己尝试这个,就知道你必须输入双倍,所以只有5个不会工作它需要5.0

#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;

//functions

void input(double data[], double size) {


    //enter data
        for (int i = 0; i < size; i++) {
            cout << "Enter data element \n";
            cin >> data[i];
        }

        //output original
        cout << "Original Data: \n";

        for (int i = 0; i < size; i++) {
            if (i) {
                cout << ", ";
            }

            cout << data[i];
        }
        cout << "\n";

}
void copy(double source[], double dest[], double size) {
    for (int i = 0; i <= size; i++)
        source[i] = dest[i];
}
void sort(double data[], double size) {

    for (int i = 19; i >= 0; i--)
    {
        for (int i = 0; i< 10; i++)
        {
            if (data[i]>data[i + 1])
            {

                double temp = data[i + 1];

                data[i + 1] = data[i];

                data[i] = temp;

            }
        }
    }

}
void display(double data[], double size) {

    //output sorted

    cout << "Sorted Data \n";

    for (int i = 0; i < size; i++) {
        if (i) {
            cout << ", ";
        }

        cout << data[i];
    }

}

int main()
{
    //variables
    bool check = true;
    double size = 0;
    double data[20] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };
    double sortedata[20] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 };

    //input
    while (true) {

        //input
        cout << "Enter data item count <1-20> \n";
        cin >> size;

        //check
        if (size < 1 || size > 20) {
            cout << "Item count is NOT within required range. The required range is 1 to 20. \n" << "Bye \n";
            break;
        }

        input(data, size);
        break;
    }
    //copy
    //copy(data, sortedata, size);

    //sort 
    sort(data, size);

    //display
    display(data, size);

    return 0;
}

1 个答案:

答案 0 :(得分:1)

首先,在复制功能中将i <= size替换为i < size

其次,在sort函数中将i < 10替换为i < size - 1

相关问题