Даны три слова. Напечатать те буквы слов, которые есть в одном из слов - C (СИ)

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

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

Условие:

Даны три слова. Напечатать только те буквы слов, которые есть только в одном из слов.

*Повторяющиеся буквы каждого слова рассматриваются*

Примерно сделал набросок на примере 2-ух слов, и у меня возник вопрос, правильно ли программа работает, и правильно ли я понимаю условие задачи то, что мне нужно вывести символы, которых нет в других словах? Или как? Скомпилируйте и проверьте. Если можно исправьте.
#include <stdio.h>
#include <ctype.h>
 
void main(void)
{
    const char str1[]={0};
    const char str2[]={0};
    int i,j;
    printf("Enter 1: ");
    scanf("%s",str1);
    printf("Enter 2: ");
    scanf("%s",str2);
 
//для 1-ого слова
    printf("# 1: ");
    for(i=0;i<strlen(str1);i++){
        for(j=0;j<strlen(str2);j++){
            if(str1[i]!=str2[j]) printf("%c",str1[i]);
        }
    }
 
//для 2-ого слова
    printf("\r\n# 2: ");
    for(i=0;i<strlen(str2);i++){
        for(j=0;j<strlen(str1);j++){
            if(str2[i]!=str1[j]) printf("%c",str2[i]);
        }
    }
}

Решение задачи: «Даны три слова. Напечатать те буквы слов, которые есть в одном из слов»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#define N 3
#define M 30
int main()
{
    char str[N][M];
    int i, j, k, q, flag = 0;
    for(i = 0; i < N; i++){
        printf("Enter word %d\n", i + 1);
        fgets(str[i], M, stdin);
    }
    for(i = 0; i < N; i++){
        for(j = 0; str[i][j]; j++, flag = 0){
            for(k = 0; k < N; k++){
                if(k != i)
                for(q = 0; str[k][q]; q++){
                    if(str[i][j] == str[k][q]){
                        flag = 1;
                        break;
                    }
                }
            }
            if(!flag)
                putchar(str[i][j]);
        }
    }
    return 0;
}

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

В этом коде пользователь вводит три слова, затем программа ищет буквы, которые есть хотя бы в одном из слов, и выводит их на экран. Вот список элементов кода с их номерами:

  1. #include - подключает файл стандартного ввода/вывода
  2. #include - подключает файл стандартных библиотек
  3. #define N 3 - определяет количество слов
  4. #define M 30 - определяет максимальную длину слов
  5. int main() - определяет основную функцию программы
  6. char str[N][M]; - объявляет массив строк для хранения слов
  7. int i, j, k, q, flag = 0; - объявляет переменные для циклов и флаг
  8. for(i = 0; i < N; i++){ - цикл по словам
  9. printf(Enter word %d\n, i + 1); - вывод приглашения для ввода слова
  10. fgets(str[i], M, stdin); - считывание слова из стандартного ввода
  11. for(i = 0; i < N; i++){ - цикл по словам
  12. for(j = 0; str[i][j]; j++, flag = 0){ - цикл по буквам слова
  13. for(k = 0; k < N; k++){ - цикл по словам
  14. if(k != i) - условие для проверки только не текущего слова
  15. for(q = 0; str[k][q]; q++){ - цикл по буквам слова
  16. if(str[i][j] == str[k][q]){ - условие для проверки совпадения букв
  17. flag = 1; - установка флага при совпадении
  18. break; - выход из внутреннего цикла при совпадении
  19. } - закрывает условие внутреннего цикла
  20. if(!flag) - условие для проверки флага
  21. putchar(str[i][j]); - вывод буквы на экран
  22. } - закрывает условие внешнего цикла
  23. return 0; - завершение программы

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

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