我有一个赋值,我必须从一个名为(“random.txt”)的文件中读取输出总数并动态地将文件复制到一个数组中。然后对文件中的值进行排序。
直到第20行,我的程序运行正常并输出我的总值以及文件中的所有数字。
第21行也开始运行,但是当我运行它时它不会输出第20行中的总数,它也不会按顺序显示值。
java version "1.8.0_40"
Java(TM) SE Runtime Environment (build 1.8.0_40-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.40-b25, mixed mode)
我知道我有很多错误,我对c ++很新,所以我还在努力学习。说实话,我不知道从第32行开始我在做什么。我知道我从24-31开始对数组进行排序,但我不知道如何将我的文件读入我的数组或如何格式化
答案 0 :(得分:1)
您的阵列加载位置错误。它应该在排序之前,但在分配之后:
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
ifstream fin("data.txt");
double temp;
size_t n = 0;
while(fin >> temp)
{
std::cout << temp << ' ';
++n;
}
std::cout << "Total: "<< n << endl;
fin.close();
if (n > 0)
{
fin.open("data.txt");
double *A = new double[n];
for (int i=0; i<n && fin >> A[i]; ++i);
fin.close();
for (int i=0;i<n-1;i++)
{
for (int j=i;j<n;j++)
{
if (A[i]>A[j])
{
int temp=A[i];
A[i]=A[j];
A[j]=temp;
}
}
}
for (int i=0; i<n; i++)
cout << "Array[" << i << "]: " << A[i] << endl;
delete [] A;
}
}
老实说,有多更好的方法来做到这一点。使用标准库容器,整个动物园减少到......
#include <algorithm>
#include <iostream>
#include <fstream>
#include <vector>
#include <iterator>
int main()
{
std::ifstream fin("data.txt");
std::vector<double> A{
std::istream_iterator<double>(fin),
std::istream_iterator<double>() };
std::sort(std::begin(A), std::end(A));
for (auto x : A)
std::cout << x << '\n';
}
答案 1 :(得分:0)
您需要先为A的元素指定值,然后才能对A进行排序或读取!
答案 2 :(得分:0)
第24-31行的排序错位了。 A
在第22和23行定义但从未初始化。我认为你打算在第21行重新开放之后从data.txt
读取它,但你没有。