Подсчет количества ЧИСЕЛ в строке с переходом на новую строку
Необходимо посчитать количество чисел в строке (из файла на вход поступает матрица), после чего перейти на новую строку, посчитать количество чисел в строке и сравнить предыдущую с новым количеством чисел в строке. В результате надо вывести количество переходов на новую строку и вывести минимальное количество чисел в строке.
Неудачная реализация в моем коде:
`
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
→ Ссылка
Предполагается что строки не заканчиваются висящими пробелами.
#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;
