Буквы в русском тексте - C (СИ)
Формулировка задачи:
Требуется написать программу, которая считывает русский текст и вычисляет частоту появления в этом тексте каждой из 33 букв русского алфавита
Решение задачи: «Буквы в русском тексте»
textual
Листинг программы
#include <stdio.h> #include <string.h> #include <ctype.h>//tolower() #include <windows.h> /*Требуется написать программу, которая считывает русский текст и вычисляет частоту появления в этом тексте каждой из 33 букв русского алфавита*/ int main() { SetConsoleCP (1251); SetConsoleOutputCP(1251); char A[70]; int alfavit[33]; char buf; int count=0; printf("Введите строку:\n"); fgets(A,70,stdin); A[strlen(A)-1]='\0';//поскольку последний символ '\n' а при выводе строки будет дополнительный пустая строка, то я затираю его (символ '\n') memset(alfavit,0,sizeof(int)*33);//заполнить массив alfavit нулями //считаем for(int i=0;i<strlen(A);i++) { buf=tolower(A[i]);//tolower нужен чтоб небыло разницы между А и а if(buf=='\0') break; if(buf==-72) alfavit[6]+=1;//если ё else if (buf>=-26) alfavit[buf+33]+=1; else alfavit[buf+33-1]+=1; } //вывод таблицы (результат подсчетов) for(int i=-32;i<0;i++) { if (i==-26) { printf("%c - %d\n",char(-72),alfavit[6]),count++; printf("%c - %d\n",char(i),alfavit[32+i+count]); } else printf("%c - %d\n",char(i),alfavit[32+i+count]); } printf("\n%s\n\n",A); return 0; }
Объяснение кода листинга программы
- Подключение необходимых библиотек для работы с консолью, строками и вводом-выводом.
- Установка кодировки консоли в UTF-8.
- Объявление переменных: массив символов A, массив для подсчета букв alfavit, переменная count для отслеживания количества введенных символов.
- Ввод строки от пользователя с помощью функции fgets().
- Очистка последнего символа новой строки в массиве A с помощью функции A[strlen(A)-1]='\0'.
- Инициализация всех элементов массива alfavit значением 0 с помощью функции memset().
- Основной цикл программы, который проходит по каждому символу в массиве A.
- Приведение символа к нижнему регистру с помощью функции tolower().
- Проверка на конец строки и выход из цикла при обнаружении символа '\0'.
- Проверка на символ
ё
и увеличение значения в соответствующем элементе массива alfavit. - В противном случае, если символ больше или равен -26, увеличение значения в элементе массива alfavit, соответствующем символу без учета регистра.
- В противном случае, увеличение значения в элементе массива alfavit, соответствующем символу без учета регистра, но с добавлением 33.
- Вывод таблицы с частотой появления каждой буквы алфавита.
- Внешний цикл, который проходит по всем символам алфавита от -32 до 0.
- В случае, если текущий символ равен -26, вывод значения в элементе массива alfavit, соответствующем символу
ё
, и увеличение значения в элементе массива alfavit, соответствующем символу без учета регистра. - В противном случае, вывод значения в элементе массива alfavit, соответствующем текущему символу без учета регистра.
- Вывод введенной строки.
- Возврат 0, что означает успешное завершение программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д