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

Найти количество букв, цифр и знаков препинания в тексте

КулХацкер Мыслитель (6850), закрыт 1 год назад
Дан русский широкосимвольный текст типа wchar_t, произвольно сохранённый в массиве wtext[512].
Найти количество букв, цифр и знаков препинания в тексте.
Результат вывести на консоль.
Лучший ответ
Николай Веселуха Высший разум (361120) 1 год назад
 #include  
#include
using namespace std;
struct Signs {
size_t letter;
size_t digit;
size_t punct;
size_t space;
Signs() : letter(0), digit(0), punct(0), space(0) {}
};
int main() {
wcout.imbue(locale(".866"));
wcin.imbue(locale(".866"));
const size_t length = 512;
wcout << L"Введите строку: ";
wchar_t wtext[length];
wcin.getline(wtext, length);
Signs signs;
for (size_t i = 0; wtext[i]; ++i) {
if (iswalpha(wtext[i])) ++signs.letter;
else if (iswdigit(wtext[i])) ++signs.digit;
else if (iswpunct(wtext[i])) ++signs.punct;
else if (iswspace(wtext[i])) ++signs.space;
}
wcout << L"Букв: " << signs.letter << L'\n';
wcout << L"Цифр: " << signs.digit << L'\n';
wcout << L"Знаков пунктуации: " << signs.punct << L'\n';
wcout << L"Пробельных символов: " << signs.space << L'\n';
system("pause > nul");
}
СергейГений (56732) 1 год назад
Считать ли богомерзкий латинский букварь буквами при условии "дан русскоязычный текст" that's is questin...
Николай Веселуха Высший разум (361120) Сергей Степанов, буква Закона нам говорит: «Дан русский широкосимвольный текст»
Остальные ответы
Евгений Высочин Просветленный (37961) 1 год назад
#include<stdio.h>
#include<wchar.h>
#include<locale.h>
#include<stdlib.h> //для паузы Windows

int main()
{
wchar_t wtext[512]={0}, *pwt=&wtext;
int dig=0, let=0, punct=0;

setlocale(LC_ALL, "Russian");
wprintf(L"Введите текст:\n");
fgetws(wtext, sizeof(wtext), stdin);

while(*pwt)
{
if((*pwt>=L'а' && *pwt<=L'я') || (*pwt>=L'А' && *pwt<=L'Я') ) let++;
if(iswpunct(*pwt)) punct++;
if(iswdigit(*pwt)) dig++;
pwt++;
}

wprintf(L"\nЦифр: %ld", dig);
wprintf(L"\nБукв: %ld", let);
wprintf(L"\nЗнаков препинания: %ld", punct);
system("pause"); //пауза в Windows
return 0;
}
Похожие вопросы