Определить, сколько раз каждый символ встречается в строке - C (СИ)
Формулировка задачи:
Здравствуйте. Стоит задача определить, сколько раз каждый символ встречается в строке. В общем-то, решение сделал, однако довольно необычно, потому что и символ '0' вполне может встречаться в строке, а я беру и не считаю его. Может, сможете подсказать какое-нибудь более вменяемое решение этой задачи?
Листинг программы
- #define mflag '0'
- #include <stdio.h>
- #include <stdlib.h>
- #include <Windows.h>
- int main()
- {
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- char s[255] = { 0 };
- int num = 0;
- printf("Введите строку: ");
- gets(s);
- for (int i = 0; i < strlen(s); i++)
- {
- for (int j = i; j < strlen(s); j++) if (s[i] == s[j]) num++;
- for (int k = i +1; k < strlen(s); k++) if (s[k] == s[i]) s[k] = mflag;
- if (s[i]!=mflag) printf("Символ %c встречается %d раз\n", s[i], num);
- num = 0;
- }
- getch();
- return 0;
- }
Решение задачи: «Определить, сколько раз каждый символ встречается в строке»
textual
Листинг программы
- #include <stdio.h>
- #include <Windows.h>
- #define MAX_LEN 10000
- int main()
- {
- int s[256] = { 0 };
- char str[MAX_LEN+1];
- char c;
- SetConsoleCP(1251);
- SetConsoleOutputCP(1251);
- printf("Введите строку: ");
- fgets(str, MAX_LEN, stdin);
- while (c = *str++) {
- ++s[c+128];
- }
- for (c = -128; c <= 127; ++c) {
- if (s[c+128]) {
- printf("Символ %c встречается %d раз\n", c, s[c+128]);
- }
- }
- }
Объяснение кода листинга программы
В этом коде:
- Объявлены две переменные:
s
типаint
иstr
типаchar
. - Переменная
s
инициализируется как массив из 256 элементов со значением 0. - Переменная
str
используется для хранения введенной пользователем строки. - Код считывает строку от пользователя с помощью функции
fgets()
. - Затем код проходит по каждому символу в строке и увеличивает соответствующий элемент в массиве
s
на 1. - После этого код проходит по всем символам от -128 до 127 (предполагая, что это все символы в кодировке CP-1251) и проверяет, сколько раз каждый символ встречается в массиве
s
. Если символ встречается, то выводит количество его вхождений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д