读取 C++ 中的 txt 数据,展开为行或列并排序
Read txt data in C++, expand into a row or column and sort
我是C++的新手,需要用C++写一段代码,读取txt数据,扩展到一个维度(一行或一列(并按降序排序。最后,我想指定一个百分比范围来取平均值。我在网上找到了一些代码片段,并像这样调试了它,但在排序阶段我无法得到我想要的结果,所有数据都会变成 -858993460。希望有人能帮助我。 txtfile
#include "stdafx.h"
#include <vector>
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<fstream>
#include<typeinfo>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int i = 0, j = 0, k = 0;
int t = 0, f = 0;
int data[20];
ifstream infile;
infile.open("C:\UsersnDesktop1111.txt");
for ( i = 0; i < 5; i++)
{
for ( j = 0; j < 4; j++)
{
infile >> data[k++];
}
}
for (i = 0; i < 5; i++)
{
for (j = 0; j < 4; j++)
{
if (data[i] > data[j]) //Sort from big to small
{
//Exchange the values of both
t = data[i];
data[i] = data[j];
data[j] = t;
}
}
}
for (int f = 0; f < 20; f++)
{
cout << data[f];
cout << 'n';
}
system("PAUSE");
}
结果
你需要转义你的
\
如果您更改您的
infile.open("C:\UsersnDesktop1111.txt");
自
infile.open("C:\Users\n\Desktop\1111.txt");
它应该正常工作。
编辑:我刚刚复制了您的文件,我可以阅读您的所有输入。我认为您的文件的打开过程仍然存在问题。
另一个问题:您将 20 个值读入数组。因此,您不需要 2 个嵌套的 for 循环。一个计数到 20 的循环足以完成该任务。这是排序算法不起作用的主要原因。
一些奇怪的代码,但您的主要错误是没有检查文件打开是否成功。您获得的垃圾值强烈表明文件打开失败。
文件可能由于多种原因而无法打开(包括 cKai 上面提到的文件(。将以下内容添加到代码中以检查文件是否已打开。
ifstream infile;
infile.open("C:\Users\n\Desktop\1111.txt");
if (!infile.is_open())
{
cerr << "file open failed, quittingn";
system("PAUSE");
return 1;
}
编辑
好的,所以上面没有证明任何事情,现在也许试试这个。改变
infile >> data[k++];
对此
if (!(infile >> data[k++]))
{
cerr << "read failed, quittingn";
system("PAUSE");
return 1;
}
并查看是否会产生任何错误消息。
相关文章:
- shell排序中的交换和比较
- 合并排序中的错误计数:计数反转
- 使用迭代器进行合并排序中的一个缓冲区
- 跟踪选择排序中的交换和比较次数
- 快速排序中的交换函数给出错误的输出
- 计数Heapsort和插入排序中的复制和比较数
- 计算选择排序中的比较次数时出错
- 请解释此计数排序中的代码
- 简单插入排序中的分段错误
- 合并排序中的递归
- 基本合并排序中的输出不正确
- 排序中的<运算符断言无效
- 合并排序中的动态内存分配
- 气泡排序中的预期交换次数
- 气泡排序中的交换次数
- 与排序相关的算法(将每个项目替换为排序排序中的索引)
- 合并排序中的堆栈溢出
- 与 C++ 中排序中的'operator+'不匹配
- 计算快速排序中的比较次数
- c++链表合并排序中的各种错误