Напечатать только те буквы слов, которые встречаются в обоих словах только один раз - C (СИ)
Формулировка задачи:
Решение задачи: «Напечатать только те буквы слов, которые встречаются в обоих словах только один раз»
#include <stdio.h> #define N 80 //Даны два слова. Напечатать только те буквы слов, которые встречаются в обоих словах только один раз. void NoRepeatLetters(char* , char* ); int main() { char str1[N], str2[N]; puts("Enter first word:"); fgets(str1, N, stdin); puts("Enter second word:"); fgets(str2, N, stdin); puts("Letters which occur in both words only once:"); NoRepeatLetters(str1, str2); NoRepeatLetters(str2, str1); return 0; } void NoRepeatLetters(char* w1, char* w2) { char* p, *q, *m; int flag = 0; for(m = w1; *m; m++, flag = 0){ for(p = w1; *p; p++){ if(p != m){ if(*m == *p){ flag = 1; break; } } } if(!flag){ for(q = w2; *q; q++){ if(*m == *q){ flag = 1; break; } } if(!flag) putchar(*m); } } }
Объяснение кода листинга программы
В этом коде реализована функция NoRepeatLetters
, которая принимает два строковых параметра типа char*. Эта функция ищет и выводит только те буквы, которые встречаются в обоих словах только один раз.
В основной функции main
создаются две строки str1
и str2
, в которые считываются два слова, введенные пользователем. Затем вызывается функция NoRepeatLetters
, передавая ей эти две строки.
Внутри функции NoRepeatLetters
используется два вложенных цикла. Внешний цикл проходит по каждому символу в первом слове, а внутренний цикл проверяет, встречается ли этот символ во втором слове. Если символ не встречается, то он выводится на экран.
Код немного запутан из-за использования указателей, но основная идея заключается в том, что функция NoRepeatLetters
ищет и выводит только те буквы, которые встречаются в обоих словах только один раз.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д