Определить, сколько раз каждый символ встречается в строке - 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
. Если символ встречается, то выводит количество его вхождений.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д