Minimum of a .txt with C++

Minimum of a .txt with C++

本文关键字:with C++ txt of Minimum      更新时间:2023-10-16

我是C++的真正新手,想问一个编码问题,

我想创建一个从文本文件中读取数据的C++代码,对于每 K 行,它必须找到数组的最小值并将其报告给单独的文本文件。例如,如果我有 1000 行并且 K 是 10,它必须寻找第一个 100 值并报告最小值,第二个 100 设置并报告第二个最小值,然后继续......

我已经写了一个代码,但它不起作用,

任何帮助将不胜感激,

ifstream fin;
fin.open ("High.txt");
if ( !fin ) exit( 1 );
double **a = new double *[N]; 
for ( int i = 0; i < K; i++ ) 
{
   a[i] = new double[N];
}
for ( int i = 0; i < K; i++ )
{
   for ( int j = 0; j < N; j++ )
   {
      fin >> a[i][j];
   }
}
double mx[N], mn[N];
int i,j,k; 
for ( i =0; i<N ; i++){
   mn[i] = a[0][i]; 
   mx[i] = a[0][i];
   for ( j = 1; j<K; j++){
      if (mx[i] < a[j][i])
      {mx[i] = a[j][i];}
      if (a[j][i] < mn[i])
      {mn[i] = a[j][i];}
   }
}
ofstream ts("Max.txt", ios::app);
for ( i =0; i<N ; i++){
   ts<<mx[i]<<endl;
}
ts.close();
}
您可以使用

std::min_element来获取最小值:

#include <algorithm>
#include <iostream>
#include <fstream>
#include <vector>
int main()
{
    std::ifstream infile("data.txt");
    std::ofstream outfile("min_values.txt");
    const int K = 10;
    std::vector<double> numbers;
    double d;
    while(infile >> d)
    {
        numbers.push_back(d);
    }
    int full_parts = numbers.size() / K;

    for (int i = 0; i < full_parts; i++)
    {
        double min = *std::min_element(numbers.begin() + i * K, numbers.begin() + i * K + K);
        outfile << min << std::endl;
    }
    if (numbers.size() % K != 0)
    {
        double min = *std::min_element(numbers.begin() + full_parts * K, numbers.end());
        outfile << min << std::endl;
    }
}
#include<bits/stdc++.h>
using namespace std;
int main(){
 ifstream fin;
 ofstream fout;
 int i=0,z,K=100,N=1000,x,j;
fout.open("High.txt");
//Generate 1000 positive random numbers below 1000 and print ino High.txt
for(i=0;i<1000;i++){
    fout<<abs(random())%1000;
}
fout.close();
fin.open ("High.txt");
fout.open("out.txt");
if (!fin ) exit( 1 );

while(i<(N/K)){
 z = 1000;
 for(j=0;j<K;j++){ //Reading K line 
        fin>>x;
        z = min(x,z);
 }
 fout<<z<<"n";
 i++;
}
fout.close();
fin.close();
fin.open("out.txt");
//Print result 
while(!fin.eof()){
    fin>>x;
    cout<<x<<"n";
}
}

生成并打印具有随机数的相同代码High.txt打印正确的输出。我们在打开文件时会出错。