我是全新的堆栈溢出,所以感谢大家耐心帮助我处理我的问题。我正在用C ++编写一个程序,它通过对.txt文件中的数字进行排序来实现插入排序。它接受一个文件,显示内容,然后询问用户是否要对数字进行排序。当我键入“y”时,它应该在我的代码中启动插入排序算法。但是现在它所做的只是完成编译。任何意见是极大的赞赏。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
//Read file input and display contents
ifstream& readfile(ifstream& file)
{
string line;
if (getline(file, line))
{
cout << line;
}
return file;
}
int main()
{
string fileName, line, r;
int n, i, j, k, temp;
int a[n];
ifstream fs;
cout << "enter file: ";
cin >> fileName;
ifstream file(fileName);
if (file.is_open())
{
while (readfile(file))
{
}
}
cout << endl << endl << "Sort File? y or n? ";
cin >> r;
if (r == "y")
{
for (i = 0; i < n; i++)
{
cin >> a[i];
}
for (i = 1; i < n; i++)
{
for (j = i; j >= 1; j--)
{
if (a[j] < a[j - 1])
{
temp = a[j];
a[j] = a[j - 1];
a[j - 1] = temp;
}
else
{
break;
}
}
}
for (k = 0; k < n; k++)
{
cout << a[k] << endl;
}
}
else
{
cout << endl << "error" << endl;
}
cin.get();
return 0;
}
答案 0 :(得分:0)
n未初始化。
for (i=0;i<n;i++)
{
cin >> a[i];
}
这里没有任何事情发生,因为(如果你很幸运......)n = 0。 如果只需要5个条目,则将n初始化为5.
或
例如,如果用户插入“停止”字:
std::vector<int> vIntegers;
std::string input;
int n = 0;
while ( input != "stop")
{
std::cin >> input;
// test if integer here
{
vIntegers.push_back(n);
}
}
这里是测试字符串是否为整数的帖子 How do I check if a C++ string is an int?