Сравнение слов и вывод не повторяющихся букв (написать функцию) - C (СИ)

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

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

Сравнить 2 слова и вывести не повторяющиеся буквы.

Например:

бог ог

Результат:

б

Проверить по символьно 1 слово с 2, а потом 2 с 1. Описать это в одной функции.

Решение задачи: «Сравнение слов и вывод не повторяющихся букв (написать функцию)»

textual
Листинг программы
//gcc 5.4.0
 
#include  <stdio.h>
 
void f(const char *word1, const char *word2) {
    size_t i, j;
    for (i=0; word1[i]; ++i) {
        for (j=0; word2[j]; ++j)
            if (word1[i] == word2[j]) 
                break;
        if (!word2[j])
            putchar(word1[i]);
    }
    for (i=0; word2[i]; ++i) {
        for (j=0; word1[j]; ++j)
            if (word2[i] == word1[j]) 
                break;
        if (!word1[j])
            putchar(word2[i]);
    }
}
int main(void)
{
    char w1[] = "Hello";
    char w2[] = "world";
    f(w1, w2);
    return 0;
}

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

В этом коде функция f принимает два указателя на строки (const char *), которые представляют собой слова, и выводит на экран все уникальные буквы из этих слов в порядке их появления. Список действий, которые происходят в коде:

  1. Инициализация двух указателей i и j нулевыми значениями.
  2. Первый цикл проходит по каждому символу в слове word1.
  3. Второй цикл проходит по каждому символу в слове word2.
  4. Если символы в текущих позициях i и j совпадают, то циклы прерываются и значение переменной j устанавливается равным нулю, чтобы начать следующую итерацию внешнего цикла.
  5. Если после завершения внутреннего цикла значение переменной j равно нулю, то выводится символ из слова2.
  6. Если после завершения внутреннего цикла значение переменной j не равно нулю, то выводится символ из слова1.
  7. Второй цикл начинается с новой итерации с обновленными значениями i и j.
  8. После завершения второго цикла значение переменной i устанавливается равным нулю, чтобы начать следующую итерацию внешнего цикла.
  9. Первый цикл начинается с новой итерации с обновленными значениями i и j.
  10. Если после завершения первого цикла значение переменной i равно нулю, то выводится символ из слова2.
  11. Если после завершения первого цикла значение переменной i не равно нулю, то выводится символ из слова1.
  12. Первый цикл начинается с новой итерации с обновленными значениями i и j.
  13. Код повторяет шаги с 4 по 11 до тех пор, пока все символы обоих слов не будут обработаны.
  14. Значение переменной i устанавливается равным нулю, чтобы начать следующую итерацию внешнего цикла.
  15. Если после завершения первого цикла значение переменной i равно нулю, то выводится символ из слова2.
  16. Если после завершения первого цикла значение переменной i не равно нулю, то выводится символ из слова1.
  17. Первый цикл начинается с новой итерации с обновленными значениями i и j.
  18. Код повторяет шаги с 4 по 16 до тех пор, пока все символы обоих слов не будут обработаны.
  19. Значение переменной j устанавливается равным нулю, чтобы начать следующую итерацию внешнего цикла.
  20. Вывод символа из слова2. В итоге, если запустить этот код с входными данными Hello, world, то он выведет на экран все уникальные буквы из этих слов в порядке их появления, то есть: H, e, l, l, o, w, r, l, d.

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

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