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

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

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

Мне дали такое задание В символьной строке оставить только те слова, которые состоят только из разных букв. Но сказали что нельзя использовать два массива и использовать только стандартные функции Однако если вы можете используя другие пожалуйста объясните что они делают( т.к. я первокурсник и знаю не много) Вот сам код но он не верен т.к. работает не всегда
#include<stdio.h>
void main(void)
{
    char line[1000];
    int i, j, a, b, flag;
    i = 0;
    j = 0;
    a = i;
    flag = 0;
    printf("Enter the string:\n");
    gets(line);
    while (line[i] != '\0')
    {
        if (line[i] == ' ' || line[i] == '.' || line[i] == ',' || line[i] == '!' || line[i] == '?' || line[i] == '\t')
        {
            if (flag == 0)
            {
                while (a != i)
                {
                    line[j] = line[a];
                    j++;
                    a++;
                }
            }
            else
            {
                line[j] = line[i];
                flag = 0;
            }
            j++;
            i++;
            a = i;
        }
        else
        {
            b = i + 1;
            while (line[b] != ' ' && line[b] != '.' && line[b] != ',' && line[b] != '!' && line[b] != '?' && line[b] != '\t' && line[b] != '\0' && flag != 1)
            {
                if (line[i] == line[b])
                {
                    flag = 1;
                }
                b++;
            }
            i++;
        }
    }
    if (flag == 0)
    {
        while (a != i)
        {
            line[j] = line[a];
            j++;
            a++;
        }
    }
    else
    {
        line[j] = line[i];
        flag = 0;
    }
    line[j] = line[i];
    printf("Summary line:\n");
    puts(line);
}

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

textual
Листинг программы
#include <stdio.h>
int main()
{
    char s[80];
    int i = 0, j, k, m, flag = 0, xflag = 0;
    puts("Input line");
    fgets(s, 80, stdin);
    while(s[i]){
        if(s[i] != ' ' && flag == 0){
            flag = 1;
            k = i;
        }
        if(flag == 1 && (s[i] == ' ' || s[i] == '.' || s[i] == '\n' || s[i] == ',')){
            for(j = k; j < i - 1; j++){
                for(m = k + 1; m < i; m++){
                    if(s[j] == s[m] && j != m){
                        xflag = 1;
                    }
                }
            }
            if(xflag == 0){
                for(j = k; j < i; j++)
                    printf("%c",s[j]);
                printf(" ");
            }
            xflag = 0;
            flag = 0;
        }
        i++;
    }
    return 0;
}

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

В этом коде:

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