Проверка наличия буквы в комбинации
Условия задачи: Язык C++. У нас есть 4 слота и условных 10 букв, которые можно в эти слоты вставить. Одну букву можно использовать только 1 раз, и порядок букв в комбинации не имеет значения, т.е. ABCD и DCBA - без разницы.
Написал небольшую программу, которая генерирует все возможные комбинации и делает определенное действие, если в комбинации существует определенная буква, поэтому при наличии буквы желательно генерировать отдельное сообщение "В комбинации есть буква [...]", впоследствии заменю это на блок других действий.
Программа вроде работает, и выдает правильный результат, но я понимаю, что это кринж конечно, и за такое надо гнать мокрыми тряпками, так что просьба помочь решить эту задачу более правильно.
Вопрос:
- Не смог придумать как сделать так, чтобы выполнялось одно действие в одном и том же блоке, в итоге [Если есть "А" то ->] приходится дублировать 4 раза.
- Изначально пробовал вариант еще сложнее, сделать что-то вроде
string Final_str [4] = {str[i], str[j], str[k], str[l]}
, а потом черезstrchr
4 раза проверять наличие символа в строке и выводить фразу, что он там присутствует, но выдает ошибку о невозможности преобразовании char к string.
#include <iostream>
using namespace std;
int main()
{
setlocale(LC_ALL, "Russian");
const char* str = "ABCDEFGHIJ";
const int strsize = 10;
int count = 1;
for (int i = 0; i < strsize - 3; i++)
for (int j = i + 1; j < strsize - 2; j++)
for (int k = j + 1; k < strsize - 1; k++)
for (int l = k + 1; l < strsize; l++)
{
cout << count << "\t" << str[i] << str[j] << str[k] << str[l] << "\n";
if (str[i] == 'A') //Проверка А
cout << " Фраза содержит букву А\n";
else if(str[j] == 'A')
cout << " Фраза содержит букву А\n";
else if (str[k] == 'A')
cout << " Фраза содержит букву А\n";
else if (str[l] == 'A')
cout << " Фраза содержит букву А\n";
if (str[i] == 'B') //Проверка B
cout << " Фраза содержит букву B\n";
else if (str[j] == 'B')
cout << " Фраза содержит букву B\n";
else if (str[k] == 'B')
cout << " Фраза содержит букву B\n";
else if (str[l] == 'B')
cout << " Фраза содержит букву B\n";
if (str[i] == 'C') //Проверка C
cout << " Фраза содержит букву C\n";
else if (str[j] == 'C')
cout << " Фраза содержит букву C\n";
else if (str[k] == 'C')
cout << " Фраза содержит букву C\n";
else if (str[l] == 'C')
cout << " Фраза содержит букву C\n";
if (str[i] == 'D') //Проверка D
cout << " Фраза содержит букву D\n";
else if (str[j] == 'D')
cout << " Фраза содержит букву D\n";
else if (str[k] == 'D')
cout << " Фраза содержит букву D\n";
else if (str[l] == 'D')
cout << " Фраза содержит букву D\n";
if (str[i] == 'E') //Проверка E
cout << " Фраза содержит букву E\n";
else if (str[j] == 'E')
cout << " Фраза содержит букву E\n";
else if (str[k] == 'E')
cout << " Фраза содержит букву E\n";
else if (str[l] == 'E')
cout << " Фраза содержит букву E\n";
if (str[i] == 'F') //Проверка F
cout << " Фраза содержит букву F\n";
else if (str[j] == 'F')
cout << " Фраза содержит букву F\n";
else if (str[k] == 'F')
cout << " Фраза содержит букву F\n";
else if (str[l] == 'F')
cout << " Фраза содержит букву F\n";
if (str[i] == 'G') //Проверка G
cout << " Фраза содержит букву G\n";
else if (str[j] == 'G')
cout << " Фраза содержит букву G\n";
else if (str[k] == 'G')
cout << " Фраза содержит букву G\n";
else if (str[l] == 'G')
cout << " Фраза содержит букву G\n";
if (str[i] == 'H') //Проверка H
cout << " Фраза содержит букву H\n";
else if (str[j] == 'H')
cout << " Фраза содержит букву H\n";
else if (str[k] == 'H')
cout << " Фраза содержит букву H\n";
else if (str[l] == 'H')
cout << " Фраза содержит букву H\n";
if (str[i] == 'I') //Проверка I
cout << " Фраза содержит букву I\n";
else if (str[j] == 'I')
cout << " Фраза содержит букву I\n";
else if (str[k] == 'I')
cout << " Фраза содержит букву I\n";
else if (str[l] == 'I')
cout << " Фраза содержит букву I\n";
if (str[i] == 'J') //Проверка J
cout << " Фраза содержит букву J\n";
else if (str[j] == 'J')
cout << " Фраза содержит букву J\n";
else if (str[k] == 'J')
cout << " Фраза содержит букву J\n";
else if (str[l] == 'J')
cout << " Фраза содержит букву J\n";
cout << "\n";
count++;
}
return 0;
}