Получить разность первой и второй последовательности в порядке возрастания - C (СИ)

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

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

У меня есть 2 множества символов, например TPQERYH и LBNQJTR в ответе надо получить разность первой и второй последовательности в порядке возрастания, т.е. в данном случае будет EHPY. Считываю через scanf("%s",...), а дальше как делать? Пытался посимвольно проверять через цикл в цикле, но при изменении массива в котором строка (s1), получаю нарушение прав доступа при чтении. Подскажите как быть. И ещё, знаю, что длина строки не более 20 символов, такое и ставлю ограничение на массив char s1[20];

Решение задачи: «Получить разность первой и второй последовательности в порядке возрастания»

textual
Листинг программы
#include<stdio.h>
#define N 1024
 
int main( )
{
    char s[N], t[N], *ps; 
    int flag[256] = {0}, i;
    printf("s = "); fgets(s, N, stdin);
    printf("t = "); fgets(t, N, stdin);
    for(ps = s; *ps; flag[*ps++] = 1)
        ;
    for(ps = t; *ps; flag[*ps++] = 0)
        ;
    for(i = 0; i < 256; i++)
        if (flag[i])
            putchar(i);
    return 0;
}

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

В этом коде задача состоит в том, чтобы получить разность двух последовательностей в порядке возрастания. Код сначала объявляет три переменные: s, t и ps. Переменная s используется для хранения первой последовательности, t - для второй, а ps - для их обработки. Затем код инициализирует массив flag, который используется для подсчета количества каждого символа в последовательностях. Далее код запрашивает у пользователя ввод первой и второй последовательностей, сохраняя их в переменных s и t соответственно. Затем код проходит по каждому символу в последовательности s, увеличивая соответствующий элемент массива flag. После этого код проходит по каждому символу в последовательности t, уменьшая соответствующий элемент массива flag. Наконец, код выводит все символы, для которых значение в массиве flag равно 1, что представляет собой разность двух последовательностей в порядке возрастания. Поэтому, список действий в коде можно оформить следующим образом:

  1. Объявление переменных.
  2. Инициализация массива flag.
  3. Ввод первой последовательности.
  4. Проход по каждому символу в первой последовательности и увеличение соответствующего элемента массива flag.
  5. Ввод второй последовательности.
  6. Проход по каждому символу во второй последовательности и уменьшение соответствующего элемента массива flag.
  7. Вывод всех символов, для которых значение в массиве flag равно 1.
  8. Возврат значения 0, обозначающего успешное выполнение программы.

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


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

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

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