Сравнение слов и вывод не повторяющихся букв (написать функцию) - 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 *), которые представляют собой слова, и выводит на экран все уникальные буквы из этих слов в порядке их появления.
Список действий, которые происходят в коде:
- Инициализация двух указателей
iиjнулевыми значениями. - Первый цикл проходит по каждому символу в слове
word1. - Второй цикл проходит по каждому символу в слове
word2. - Если символы в текущих позициях
iиjсовпадают, то циклы прерываются и значение переменнойjустанавливается равным нулю, чтобы начать следующую итерацию внешнего цикла. - Если после завершения внутреннего цикла значение переменной
jравно нулю, то выводится символ из слова2. - Если после завершения внутреннего цикла значение переменной
jне равно нулю, то выводится символ из слова1. - Второй цикл начинается с новой итерации с обновленными значениями
iиj. - После завершения второго цикла значение переменной
iустанавливается равным нулю, чтобы начать следующую итерацию внешнего цикла. - Первый цикл начинается с новой итерации с обновленными значениями
iиj. - Если после завершения первого цикла значение переменной
iравно нулю, то выводится символ из слова2. - Если после завершения первого цикла значение переменной
iне равно нулю, то выводится символ из слова1. - Первый цикл начинается с новой итерации с обновленными значениями
iиj. - Код повторяет шаги с 4 по 11 до тех пор, пока все символы обоих слов не будут обработаны.
- Значение переменной
iустанавливается равным нулю, чтобы начать следующую итерацию внешнего цикла. - Если после завершения первого цикла значение переменной
iравно нулю, то выводится символ из слова2. - Если после завершения первого цикла значение переменной
iне равно нулю, то выводится символ из слова1. - Первый цикл начинается с новой итерации с обновленными значениями
iиj. - Код повторяет шаги с 4 по 16 до тех пор, пока все символы обоих слов не будут обработаны.
- Значение переменной
jустанавливается равным нулю, чтобы начать следующую итерацию внешнего цикла. - Вывод символа из слова2.
В итоге, если запустить этот код с входными данными
Hello,world, то он выведет на экран все уникальные буквы из этих слов в порядке их появления, то есть:H,e,l,l,o,w,r,l,d.