Возможно ли переставляя и удаляя буквы первого слова добавляя буквы второго получить третье слово? - C (СИ)

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

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

Помогите пожалуйста написать программу,завтра нужно сдавать.Условие:в заданной строке записаны 3 слова.Возможно ли переставляя и удаляя буквы первого слова добавляя буквы второго получить третье слово. Очень надо,срочно.Заранее спасибо!

Решение задачи: «Возможно ли переставляя и удаляя буквы первого слова добавляя буквы второго получить третье слово?»

textual
Листинг программы
#include <iostream>
#include <cstring>
 
using namespace std;
 
int main()
{
    const int SIZE = 128;
    char word1[SIZE], word2[SIZE], word3[SIZE];
    cin >> word1 >> word2 >> word3;
    int a[26], b[26], c[26];
    for (int i = 0; i < 26; i++)
        a[i] = b[i] = c[i] = 0;
        
    for (int i = 0; i < strlen(word1); i++)
        a[toupper(word1[i]) - 65]++; // 'A' - 65, 'B' - 66 ...
    for (int i = 0; i < strlen(word2); i++)
        a[toupper(word2[i]) - 65]++; // 'A' - 65, 'B' - 66 ...
    for (int i = 0; i < strlen(word3); i++)
        a[toupper(word3[i]) - 65]++; // 'A' - 65, 'B' - 66 ...
    
    bool flag = true;
    for (int i = 0; i < 26; i++)
    {
        if (a[i] + b[i] < c[i])
        {
            flag = false;
            break;
        }
    }
    
    if (flag)
        cout << "YES";
    else cout << "NO";
    return 0;
}

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

  1. В начале определяются три строки-переменные: word1, word2, word3, которые предназначены для ввода первых трех слов.
  2. Далее определяются три массива-переменные: a, b, c, которые предназначены для подсчета количества букв в каждом слове.
  3. В первой тройке циклов происходит заполнение массивов a, b, c. В каждой итерации происходит увеличение счетчика для соответствующей буквы в каждом слове.
  4. Во второй тройке циклов происходит сравнение количества букв в каждом слове. Если сумма букв в word2 и word3 меньше, чем количество букв в word1, то флаг устанавливается в false и выполнение программы прерывается.
  5. В последней тройке циклов проверяется значение флага. Если он равен true, то выводится YES, иначе выводится NO.
  6. В конце программы указывается, что функция main() возвращает 0, что означает успешное завершение программы.

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


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

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

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