Подсчет количества ЧИСЕЛ в строке с переходом на новую строку

формат входных данных

Необходимо посчитать количество чисел в строке (из файла на вход поступает матрица), после чего перейти на новую строку, посчитать количество чисел в строке и сравнить предыдущую с новым количеством чисел в строке. В результате надо вывести количество переходов на новую строку и вывести минимальное количество чисел в строке.

Неудачная реализация в моем коде:

     `
    string s;
    getline (f,s);
    int spaces = 0,
    realcol= 10;
    while(f.eof()!=0)
    {
       for(int i = 0; i < s.length();i++);
       {

        if(s[i] == ' ') spaces++;
       }
    spaces++;
    if(realcol > spaces) realcol = spaces;
       }


         cout<<realcol;

Ответы (2 шт):

Автор решения: Qwertiy

Предполагается что строки не заканчиваются висящими пробелами.

https://ideone.com/pjuszl

#include <cstdio>
#include <iostream>

using namespace std;

int main()
{
  unsigned cur = 0, res = ~0U;
  int x;
  char s[2];
  int n;
  
  while (1)
  {
    n = scanf("%d%1[\n]", &x, s);
    
    if (n > 0)
      ++cur;

    if (n != 1)
    {
      cout << cur << endl;
      if (cur && cur < res) res = cur;
      if (n <= 0) break;
      cur = 0;
    }
  }
  
  cout << "Min is " << res << endl;
  
  return 0;
}
→ Ссылка
Автор решения: AR Hovsepyan

Ваш код можно переписать следующим образом:

string s;  //или int s
unsigned spaces{}, realcol = 1000;
while (f >> s) {
    ++spaces;
    //если достигли конца строки
    if (f.peek() == '\n') {
        //сравниваем
        if(spaces < realcol)
            realcol = spaces;
        //обнуляем счетчик
        spaces = 0;
    }
}
cout << realcol;
→ Ссылка