Почему не считает буквы, которые повторяются в с++?
В файле находится строка - pavel lubovalsy yablokom na stole ela mama
В результате должен выводиться результат 3, а не 0 как на фото. Помогите пожалуйста.
Задание: файл определить сколько слов в строке начинается с той же буквы, которой закончилось предыдущее слово.
Код:
#include <fstream>
#include <stdlib.h>
#include <iostream>
using namespace std;
int main()
{
int kol,i;
cout << "Vvedite file s rashireniem: "<< endl;
char a[50];
cin >> a;
string str;
ifstream file(a,ios::in);
getline(file, str);
cout<<str<<endl;
for (int i=1;i<(str.length());i++)
{
if (a[i]==' ')
{
if (a[i-1] == a[i+1])
{
kol++;
}
}
}
cout <<"Kolichestvo slow nachinajushihsya s toi je bukwi, kototoi zanonchilos predidushee slovo : " << kol << endl;
file.close();
system("pause");
return 0;
}
Ответы (1 шт):
Локальный объект int kol не определен. и при объявлении содержит не известно что(мусор). Инициализируйте его нулем. Кроме этого, не нужно читать из файла всю строку, а потом его анализировать. Читайте просто до разделителя:
int counter = 0;
std::string str;
char c = ' ';
while (file >> str ) {
if (c == str[0] )
++counter;
c = str.back();
}
cout << counter;
Если хотите прочитать только одну строку, тогда добавьте условие, что следующий читаемый символ не есть символ перевода строки: while (file.peek() != '\n' && file >> str )
