Дано предложение. Удалить из каждого слова повторяющиеся буквы - C (СИ)

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

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

Дано предложение. Удалить из каждого слова все повторяющиеся буквы, т.е. в каждом слове должны остаться только различные буквы.

Решение задачи: «Дано предложение. Удалить из каждого слова повторяющиеся буквы»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <ctype.h>
  3.  
  4. //только для ascii
  5. char* unique_abc(char* s){
  6.     unsigned int n, shf = 0;
  7.     char* p = s, *t = s;
  8.  
  9.     for(; *s; *s = *++p){
  10.         if(isalpha(*p)){
  11.             n = (unsigned int)(toupper(*p) - 'A');
  12.             if(!((shf >> n) & 1)){
  13.                 shf |= 1 << n;
  14.                 ++s;
  15.             }
  16.         } else {
  17.             ++s;
  18.             shf = 0;
  19.         }
  20.     }
  21.     return t;
  22. }
  23.  
  24. int main(void){
  25.     char s[] = "DDD, LISPSSS, ppeerrlll, GGGGGOOO.";
  26.     puts(s);
  27.     puts( unique_abc(s) );
  28.     getchar();
  29.     return 0;
  30. }

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

В данном коде реализована функция unique_abc, которая принимает в качестве аргумента строку s и возвращает новую строку, в которой удалены повторяющиеся буквы. В функции используется два указателя: p указывает на текущий символ в строке, t указывает на предыдущий символ. Алгоритм работы функции следующий:

  1. Проходим по каждому символу в строке.
  2. Если символ является буквой, то:
    • Преобразуем символ в верхний регистр.
    • Вычисляем номер буквы в алфавите (с учетом регистра).
    • Проверяем, была ли уже в этой позиции буква. Если нет, то:
      • Запоминаем текущий символ в позиции.
      • Перемещаем указатель t на позицию следующего символа.
  3. Если символ не является буквой, то:
    • Перемещаем указатель t на позицию следующего символа.
  4. Возвращаем новую строку, начиная с позиции t. В функции main создается тестовая строка s, которая содержит повторяющиеся буквы. Затем выводится исходная строка, после чего выводится строка, полученная с помощью функции unique_abc. Данный код работает только с символами ASCII. Если в строке будут присутствовать символы, не входящие в диапазон ASCII, то они не будут корректно обработаны.

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


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

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

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

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

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

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