Количество уникальных символов в строке - C (СИ)

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

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

Найти количество уникальных символов в строке.
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include<string.h>
void main ()
{
    char slovo[100];
    printf ("vvedite slovo: ");
    fflush (stdin);
    scanf ("%s",slovo);
    int k, z=0, j, unic, b=0;
    k = strlen(slovo);
    for (int i = 0 ; i < k; i++)
    {
        for ( j = i+1 ; j < k ; j++)
        {
            if (slovo[i] == slovo[j])
            {
                z++;    
            }   
        }   
    }
    unic = k - z;
    printf ("%d\n",unic);
    getch();
}
Программа работает, только в том случае, если есть не более двух одинаковых символов.

Решение задачи: «Количество уникальных символов в строке»

textual
Листинг программы
#include <stdio.h>
#include <limits.h>
#include <string.h>
 
size_t diff_chars(const char * s) {
    int counters[UCHAR_MAX + 1] = { 0 };
    size_t chars = strlen(s);
    
    for ( ; *s; ++s )
        if ( ++counters[(unsigned)*s] > 1 )
            --chars;
    
    return chars;
}
 
int main(void) {
    char str[256];
    
    while ( printf("String: ") && scanf("%255[^\n]%*c", str) == 1 )
        printf("%u different chars.\n", diff_chars(str));
    
    return 0;
}

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

  1. Подключаются необходимые заголовочные файлы: stdio.h, limits.h, string.h
  2. В функции diff_chars инициализируется массив counters, который будет подсчитывать количество каждого уникального символа в строке s.
  3. Инициализируется переменная chars, которая хранит длину строки s.
  4. В цикле for перебираются все символы строки s. Если символ уже встречался (т.е. значение counter для этого символа больше 1), то из значения chars вычитается единица. Это происходит потому, что этот символ считается только один раз.
  5. В функции main создается пустая строка str.
  6. В цикле while программа запрашивает у пользователя ввод строки и выводит количество уникальных символов в этой строке с помощью функции diff_chars.
  7. Возвращается 0, что означает успешный конец работы программы.

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


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

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

11   голосов , оценка 4.182 из 5
Похожие ответы