#include<iostream>
#include<fstream>
#include<limits>
#include<vector>
#include<iterator>
#include<algorithm>
#include<string>
using namespace std;
int main()
{
const string filein = "D:\\numbers_in.txt";
const string fileout = "D:\\numbers_out.txt";
vector<double> v;
ios_base::sync_with_stdio(false);
if(ifstream ifs(filein); ifs)
{
transform(istream_iterator<string>{ifs}, {}, back_inserter(v), [](const auto& xs){
double d = numeric_limits<double>::infinity();
try
{
d = stod(xs);
}
catch(...)
{
cout << "wrong\n";
}
return d;
});
}
copy(v.begin(), v.end(), ostream_iterator<double>{cout, " "});
if(ofstream ofs(fileout); ofs)
{
copy(v.begin(), v.end(), ostream_iterator<double>{ofs, " "});
}
cin.get();
}
-1.0 3.0e5 inf 23.01 55.003
-1 300000 inf 23.01 55.003
-1.0 3.0e5 inf
5.0 inf 0.008
1.45 3.99 -5.25
#include<iostream>
#include<fstream>
#include<limits>
#include<vector>
#include<iterator>
#include<algorithm>
#include<string>
#include<sstream>
using namespace std;
auto parse_line = [](istream& is)
{
vector<double> row;
transform(istream_iterator<string>{is}, {}, back_inserter(row), [](const auto& xs){
double d = numeric_limits<double>::infinity();
try
{
d = stod(xs);
}
catch(...)
{
cout << "wrong\n";
}
return d;
});
return row;
};
int main()
{
const string filein = "D:\\numbers_in.txt";
const string fileout = "D:\\numbers_out.txt";
vector<vector<double>> matrix;
ios_base::sync_with_stdio(false);
if(ifstream ifs(filein); ifs)
{
string line;
while(getline(ifs, line))
{
istringstream is{ line };
matrix.push_back(parse_line(is));
}
}
for(const auto& v : matrix)
{
copy(v.begin(), v.end(), ostream_iterator<double>{cout, " "});
cout << "\n";
}
if(ofstream ofs(fileout); ofs)
{
for(const auto& v : matrix)
{
copy(v.begin(), v.end(), ostream_iterator<double>{ofs, " "});
ofs << "\n";
}
}
cin.get();
}
А нужно написать бесконечность потому что потом буду искать минимальный элемент среди этих элементов и чтобы этот минус не мешал поиск.
using Matrix = vector<vector<double>>;
auto find_min = [](const Matrix& m)
{
vector<double> values;
for(const auto& row : m)
{
values.push_back(*min_element(row.begin(), row.end()));
}
return *min_element(values.begin(), values.end());
};
// ...
cout << "Min element: " << find_min(matrix) << endl;
Min element: -5.25