Определить, сколько раз каждый символ встречается в строке - 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]);
        }
    }
}

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

В этом коде:

  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
Похожие ответы