Задача проста: прочитать одну строку и вывести её длину в символах (а не в байтах). Пример: для входов "привет" и "длинная строка!" вывод должен быть 6 и 15 соответственно.
Пошагово:
- Ввод: читаем одну строку целиком (до перевода строки), чтобы учесть пробелы внутри.
- Подсчёт: количество символов в строке. В большинстве языков это эквивалент количества Юникод-символов (кодовых точек).
- Вывод: печатаем полученное число.
Простой вариант на Python 3 (рабочий и понятный, корректно считает символы Unicode):
- s = input() # считывает одну строку до конца строки, пробелы внутри остаются
- print(len(s)) # длина строки по символам (кодовым точкам)
Привожу готовый код Васиной программы (Python 3):
s = input()
print(len(s))
Пояснение:
- В Python 3 функция input() считывает строку без завершающего переноса строки и сохраняет все символы, включая пробелы внутри.
- Функция len(s) возвращает количество символов в строке, то есть нужную длину.
Дополнительно для тех, кто пишет на C++ и хочет корректно учитывать Unicode:
- По умолчанию std::string хранит байты, и длина может оказаться неверной для Unicode в UTF-8. Чтобы посчитать именно количество кодовых точек, можно декодировать UTF-8 и подсчитать иные символы, либо использовать wide-ввод.
- Пример компактной реализации на C++, считающей кодовые точки в UTF-8 (без связанных с локалью возможностей):
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string s;
if (!getline(cin, s)) return 0;
size_t i = 0, n = s.size(), cnt = 0;
while (i < n) {
unsigned char c = s[i];
if ((c & 0x80) == 0) { // однобайтовый ASCII
++i;
} else if ((c & 0xE0) == 0xC0) { // 2 байта
i += 2;
} else if ((c & 0xF0) == 0xE0) { // 3 байта
i += 3;
} else if ((c & 0xF8) == 0xF0) { // 4 байта
i += 4;
} else {
// некорректный байт, пропускаем его как один символ
++i;
}
++cnt;
}
cout << cnt;
return 0;
}
Но для простого задания и максимально понятного решения лучше использовать Python, как в приведённом первом примере.