Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Исправьте код на с++

mikkzi color Ученик (116), на голосовании 14 часов назад
#include <iostream>
#include <sstream>
#include <string>

int main() {
setlocale(LC_ALL, "");
std::string input;
std::cout << "Введите слова, разделенные пробелами: ";
std::getline(std::cin, input); // Считываем всю строку с пробелами

std::istringstream stream(input);
std::string word;
int count = 0;

while (stream >> word) { // Считываем каждое слово
// Проверяем наличие буквы 'П' или 'п'
if (word.find('П') != std::string::npos || word.find('п') != std::string::npos) {
count++; // Увеличиваем счетчик, если буква найдена
}
}

std::cout << "Количество слов, содержащих букву 'П' или 'п': " << count << std::endl;
return 0;
}
Он всегда выдает кол-во слов равным нулю
Голосование за лучший ответ
R.H. Мастер (1200) 1 месяц назад
Может быть в этом дело
В зависимости от операционной системы и среды выполнения, использование setlocale может не всегда корректно влиять на обработку русских символов в консоли. Например, в Windows установка локали с помощью этой функции может не помочь при вводе/выводе русских символов в консоли, если сама консоль не настроена на правильную кодировку.
mikkzi colorУченик (116) 1 месяц назад
нет, я даже в онлайн компиляторе проверял, не работает
Хир Гуру (3681) 1 месяц назад
Кавычки одинарные замени на двойные, там где "П" и "п" у тебя, 17 строка
Батаев Дмитрий Просветленный (22897) 1 месяц назад
 string txt = 
" Возможность нахождения поисковых ключей в тексте и\n \
определения их количества полезна как для написания нового текста,\n \
так и для оптимизации уже существующего.";

cout << txt << endl;

int i=0; bool f= false; int cnt=0;

//if (txt[i]==' ') i++;
cout << "text= " << txt.length() << endl;
while (i< 255)
{
while (txt[i]!=' ')
{
if (txt[i]=='п' || txt[i]=='П') f= true;
i++;
}
i++; cout << " i= " << i << endl;
if (f) { cnt++; }
f= false;
}

cout << "В тексте найдено " << cnt << " букв 'п' или 'П'" << endl;
Батаев ДмитрийПросветленный (22897) 1 месяц назад
а ещё лучше есть указатели на позицию байта в файле. Читаешь байт, анализируешь... Это если текст очень большой и сохранён на диске. Это лучше, чем в оперативке работать даже с вектором и алгоритмами или шаблон поиска текста регулярных выражений
Николай Веселуха Высший разум (368748) 1 месяц назад
 #include <iostream>
#include <sstream>
#include <string>

using namespace std;

int main() {
system("chcp 1251 > nul");
string input;
cout << "Введите слова, разделенные пробелами: ";
getline(cin, input);

istringstream stream(input);
string word;
auto count = 0U;

const string pattern{ "Пп" };

while (stream >> word) {
for (auto letter : pattern) {
if (word.find(letter) != string::npos) {
++count;
break;
}
}
}

cout << "Количество слов, содержащих букву 'П' или 'п': " << count << endl;
system("pause > nul");
}
Похожие вопросы