В символьной строке оставить только те слова, которые состоят только из разных букв - C (СИ)

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

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

Мне дали такое задание В символьной строке оставить только те слова, которые состоят только из разных букв. Но сказали что нельзя использовать два массива и использовать только стандартные функции Однако если вы можете используя другие пожалуйста объясните что они делают( т.к. я первокурсник и знаю не много) Вот сам код но он не верен т.к. работает не всегда
Листинг программы
  1. #include<stdio.h>
  2. void main(void)
  3. {
  4. char line[1000];
  5. int i, j, a, b, flag;
  6. i = 0;
  7. j = 0;
  8. a = i;
  9. flag = 0;
  10. printf("Enter the string:\n");
  11. gets(line);
  12. while (line[i] != '\0')
  13. {
  14. if (line[i] == ' ' || line[i] == '.' || line[i] == ',' || line[i] == '!' || line[i] == '?' || line[i] == '\t')
  15. {
  16. if (flag == 0)
  17. {
  18. while (a != i)
  19. {
  20. line[j] = line[a];
  21. j++;
  22. a++;
  23. }
  24. }
  25. else
  26. {
  27. line[j] = line[i];
  28. flag = 0;
  29. }
  30. j++;
  31. i++;
  32. a = i;
  33. }
  34. else
  35. {
  36. b = i + 1;
  37. while (line[b] != ' ' && line[b] != '.' && line[b] != ',' && line[b] != '!' && line[b] != '?' && line[b] != '\t' && line[b] != '\0' && flag != 1)
  38. {
  39. if (line[i] == line[b])
  40. {
  41. flag = 1;
  42. }
  43. b++;
  44. }
  45. i++;
  46. }
  47. }
  48. if (flag == 0)
  49. {
  50. while (a != i)
  51. {
  52. line[j] = line[a];
  53. j++;
  54. a++;
  55. }
  56. }
  57. else
  58. {
  59. line[j] = line[i];
  60. flag = 0;
  61. }
  62. line[j] = line[i];
  63. printf("Summary line:\n");
  64. puts(line);
  65. }

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

textual
Листинг программы
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     char s[80];
  5.     int i = 0, j, k, m, flag = 0, xflag = 0;
  6.     puts("Input line");
  7.     fgets(s, 80, stdin);
  8.     while(s[i]){
  9.         if(s[i] != ' ' && flag == 0){
  10.             flag = 1;
  11.             k = i;
  12.         }
  13.         if(flag == 1 && (s[i] == ' ' || s[i] == '.' || s[i] == '\n' || s[i] == ',')){
  14.             for(j = k; j < i - 1; j++){
  15.                 for(m = k + 1; m < i; m++){
  16.                     if(s[j] == s[m] && j != m){
  17.                         xflag = 1;
  18.                     }
  19.                 }
  20.             }
  21.             if(xflag == 0){
  22.                 for(j = k; j < i; j++)
  23.                     printf("%c",s[j]);
  24.                 printf(" ");
  25.             }
  26.             xflag = 0;
  27.             flag = 0;
  28.         }
  29.         i++;
  30.     }
  31.     return 0;
  32. }

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

В этом коде:

  1. Объявлены переменные:
    • s - символная строка, в которую вводится текст с клавиатуры;
    • i, j, k, m - счётчики для обработки текста;
    • flag - флаг, который отслеживает первое вхождение символа в строку;
    • xflag - флаг, который отслеживает одинаковые символы в строке.
  2. Ввод строки с клавиатуры.
  3. В цикле обрабатывается каждый символ в строке. Если текущий символ не пробел и флаг равен 0, то:
    • устанавливается флаг flag равным 1;
    • сохраняется индекс первого символа в строке.
  4. Если флаг равен 1 и текущий символ является пробелом или знаком препинания, то:
    • в цикле проходят по всем символам от индекса k до i-1, которые не являются пробелами, знаками препинания или текущим символом;
    • в цикле проверяют каждый символ на равенство текущему символу и его индексу;
    • если найден такой символ, то устанавливается флаг xflag равным 1.
  5. Если флаг xflag равен 0, то:
    • в цикле проходят по всем символам от индекса k до i-1 и выводят каждый символ;
    • после вывода символа добавляют пробел.
  6. После цикла устанавливают флаг xflag равным 0 и флаг flag равным 0.
  7. Цикл продолжается до тех пор, пока не будет введен символ новой строки.
  8. Программа завершается, возвращая 0.

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


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

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

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

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

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

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