Определить, сколько раз каждый символ встречается в строке - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Стоит задача определить, сколько раз каждый символ встречается в строке. В общем-то, решение сделал, однако довольно необычно, потому что и символ '0' вполне может встречаться в строке, а я беру и не считаю его. Может, сможете подсказать какое-нибудь более вменяемое решение этой задачи?
Листинг программы
  1. #define mflag '0'
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <Windows.h>
  5. int main()
  6. {
  7. SetConsoleCP(1251);
  8. SetConsoleOutputCP(1251);
  9. char s[255] = { 0 };
  10. int num = 0;
  11. printf("Введите строку: ");
  12. gets(s);
  13. for (int i = 0; i < strlen(s); i++)
  14. {
  15. for (int j = i; j < strlen(s); j++) if (s[i] == s[j]) num++;
  16. for (int k = i +1; k < strlen(s); k++) if (s[k] == s[i]) s[k] = mflag;
  17. if (s[i]!=mflag) printf("Символ %c встречается %d раз\n", s[i], num);
  18. num = 0;
  19. }
  20. getch();
  21. return 0;
  22. }

Решение задачи: «Определить, сколько раз каждый символ встречается в строке»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <Windows.h>
  3. #define MAX_LEN 10000
  4. int main()
  5. {
  6.     int s[256] = { 0 };
  7.     char str[MAX_LEN+1];
  8.     char c;
  9.     SetConsoleCP(1251);
  10.     SetConsoleOutputCP(1251);
  11.     printf("Введите строку: ");
  12.     fgets(str, MAX_LEN, stdin);
  13.     while (c = *str++) {
  14.         ++s[c+128];
  15.     }
  16.     for (c = -128; c <= 127; ++c) {
  17.         if (s[c+128]) {
  18.             printf("Символ %c встречается %d раз\n", c, s[c+128]);
  19.         }
  20.     }
  21. }

Объяснение кода листинга программы

В этом коде:

  1. Объявлены две переменные: s типа int и str типа char.
  2. Переменная s инициализируется как массив из 256 элементов со значением 0.
  3. Переменная str используется для хранения введенной пользователем строки.
  4. Код считывает строку от пользователя с помощью функции fgets().
  5. Затем код проходит по каждому символу в строке и увеличивает соответствующий элемент в массиве s на 1.
  6. После этого код проходит по всем символам от -128 до 127 (предполагая, что это все символы в кодировке CP-1251) и проверяет, сколько раз каждый символ встречается в массиве s. Если символ встречается, то выводит количество его вхождений.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы