C ++程序不创建输出文件。编译器显示没有错误

时间:2017-11-08 00:51:59

标签: c++

我的程序没有创建输出文件来显示组织数组。代码运行没有错误,但在检查保存源文件的文件夹时,我没有看到名为result.txt的文件。有什么想法吗?

#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
void sort(double a[], int control);
int main()
{
    int control=15;
    double a[control];
    ifstream in_stream;
    in_stream.open("data.txt");
    if(in_stream.fail())
    {
    cout<<"Input file opening failed\n.";
        exit(1);
    }
    for (int i=0;i<15;i++)
    {
        in_stream>>a[i];
    }
    in_stream.close();

    sort(a,control);

    ofstream out_stream;
    out_stream.open("result.txt");
    if(out_stream.fail())
        {
            cout<<"Output file opening failed\n.";
            exit(1);
        }
    for(int i=0;i<15;i++)
    {
        out_stream<<a[i];
    }
    out_stream.close();

    return 0;
}

void sort(double a[], int control)
{
    int swapped=0,temp,i;
    while(1)
    {
    for (i=0;i<control;i++)
        {
            int temp=a[i];
            a[i]=a[i+1];
            a[i+1]=temp;
            swapped=1;
        }
        if (swapped == 0)break;
    }

}

1 个答案:

答案 0 :(得分:0)

你的程序永远不会到达你写下输出流的部分,因为它会在你的排序方法中陷入无限循环。

您可以使用此冒泡排序方法。

// A function to implement bubble sort
void sort(double a[], int control) {
    int i, j;
    for (i = 0; i < control - 1; i++)

        // Last i elements are already in place
        for (j = 0; j < control - i - 1; j++)
            if (a[j] > a[j + 1]) {
                int temp = a[i];
                a[i] = a[i + 1];
                a[i + 1] = temp;
            }
}