Посчитать минимальное количество столбцов в матрице
Матрица записана в текстовом файле, необходимо посчитать минимальное количество столбцов в матрице и заполнить двумерный массив обработанной матрицей (в моем случае необходимо заполнить двумерный массив, исключив последний столбец.) .
Неудачная реализация в моем коде:
`
int rows; // к-во строк
int col=0; // кол-во столбцов
string str;
int minCol=0;
while(!f.eof())
{
getline(f,str);
rows++;
istringstream ss(str);
int dat;
if (col>minCol) break;
else
{
col=0;
while(ss>>dat)
{
col++;
if (col>minCol)
minCol=col;
}
}
}
Ответы (1 шт):
Автор решения: Harry
→ Ссылка
int main()
{
vector<vector<int>> v;
ifstream in("data");
string buf;
int min_size = INT_MAX;
while(getline(in,buf))
{
vector<int> ln;
istringstream is(buf);
for(int d; is >> d;) ln.push_back(d);
if (ln.size())
{
v.push_back(ln);
if (min_size > ln.size()) min_size = ln.size();
}
}
for(auto& ln: v) ln.resize(min_size);
for(const auto& ln: v)
{
for(const auto& d: ln) cout << setw(3) << d << " ";
cout << "\n";
}
}
