Advertisement
gg-master

Lab_6-1_VAR_8_(2.2)

Mar 30th, 2023
404
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.67 KB | Source Code | 0 0
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <locale>
  4.  
  5.  
  6. int main() {
  7.     setlocale(LC_ALL, "Russian");
  8.  
  9.     // Только латиница, ибо с кириллицей заморочки при вводе
  10.     const int ALPHABET_LENGTH = 26;
  11.     const char* ALPHABET = "abcdefghijklmnopqrstuvwxyz";
  12.  
  13.     const int MAX_STR_LEN = 100;
  14.     char str[MAX_STR_LEN + 1] = "";
  15.  
  16.     int freq[ALPHABET_LENGTH] = { 0 };
  17.     char viewed_symbols[ALPHABET_LENGTH + 1] = "";
  18.  
  19.     int i, max_freq = 0, max_index = 0;
  20.  
  21.     printf("Введите строку: ");
  22.     gets_s(str);
  23.  
  24.     // переводим все символы строки в нижний регистр
  25.     for (i = 0; i < strlen(str); i++) {
  26.         str[i] = tolower(str[i]);
  27.     }
  28.  
  29.     // считаем частоту каждой буквы в строке
  30.     for (i = 0; i < strlen(str); i++) {
  31.         if (strchr(ALPHABET, str[i]) != NULL) {
  32.             char* sym_ptr = strchr(viewed_symbols, str[i]);
  33.  
  34.             if (sym_ptr != NULL) freq[sym_ptr - viewed_symbols]++;
  35.             else {
  36.                 int new_index = strlen(viewed_symbols);
  37.                 viewed_symbols[new_index] = str[i];
  38.                 freq[new_index] = 1;
  39.             }
  40.         }
  41.     }
  42.  
  43.     // находим букву с максимальной частотой
  44.     for (i = 0; i < strlen(viewed_symbols); i++) {
  45.         if (freq[i] > max_freq) {
  46.             max_freq = freq[i];
  47.             max_index = i;
  48.         }
  49.     }
  50.  
  51.     // выводим результат
  52.     printf("Самая часто встречающаяся буква в строке: %c\n", viewed_symbols[max_index]);
  53.  
  54.     return 0;
  55. }
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement