C/C++

Помогите с решением задачи на С++

Перед Зои три дома разного цвета. Ей известно, рядом с домом какого цвета видели последний раз её Пушистика. Дома имеют номера: 1, 2 и 3. Определите номер дома, с владельцем которого ей надо поговорить насчёт своего питомца.
Формат входных и выходных данных
В стандартный поток ввода передаются четыре цвета: цвета трёх домов и цвет дома, рядом с которым видели Пушистика. Цвета разделяются одним пробелом. Гарантируется, что все три дома имеют разные цвета.
В стандартный поток вывода надо вывести строку Enter the house X — «Войти в дом X», где X — номер дома: 1, 2 или 3, рядом с которым видели Пушистика. Если среди домов нет дома нужного цвета, надо вывести строку Seek somewhere else — «Искать в другом месте».
После фразы выведите символ конца строки.
JI
Jamsit Ibragimov
232
#include <algorithm>
#include <iostream>
#include <string>
#include <array>
using namespace std;
struct Home {
unsigned number;
string color;
Home() : number(0) {}
Home(const unsigned number, const string& color) : number(number), color(color) {}
private:
friend bool operator==(const Home& a, const Home& b) {
return a.color == b.color;
}
};
int main() {
array<Home, 3> street;
auto number = 0U;
string color;
for (auto& home : street) {
cin >> color;
home = { ++number, color };
}
cin >> color;
auto pos = find(street.begin(), street.end(), Home{ 0, color });
if (pos != street.end()) cout << "Enter the house " << pos->number << '\n';
else puts("Seek somewhere else");
system("pause > nul");
}
Артем Беспалов
Артем Беспалов
90 748
Лучший ответ
Jamsit Ibragimov Спасибо большое.
#include <iostream>
#include <string>

using namespace std;

int main()
{
const int size = 4;
string color[size];
for(int x = 0; x < size; x++)
{
if (x == 0) cin >> color[x];
else if(x < size -1)
{
bool change = false;
do
{
cin >> color[x];
for(int y = 0; y < x; y++)
{
if(color[y] == color[x])
{
change = true;
cerr << "Retry enter color: ";
break;
}
else change = false;
}
} while(change);
}
else cin >> color[x];
}

int find = -1;
for(int x = 0; x < size - 1; x++)
if(color[x] == color[size-1])
{
find = x;
break;
}

if(find == -1) cout << "Seek somewhere else" << endl;
else cout << "Enter the house " << find + 1 << endl;

return 0;
}
Виктор Суворов
Виктор Суворов
91 966
Виктор Суворов Чтобы программа срабатывала на ввод повторного цвета сразу, после названия каждого цвета нажимайте Ввод (Enter).
Jamsit Ibragimov Спасибо за ответ. Должно вводится и выводится как написано ниже. Если вам не сложно можете с учётом этих цветов написать. Буду вам очень благодарен. Не давно начал учится и пока ещё не всё понимаю. Заранее благодарю вас за ответ.
Ввод Вывод
red green blue red Enter the house 1
white blue yellow yellow Enter the house 3
red green blue black Seek somewhere else
#include

using namespace std;

int main() {
string color1, color2, color3, color_target;
cin >> color1 >> color2 >> color3 >> color_target;
if (color_target == color1) {
cout << "Enter the house " << 1 << endl;
} else if (color_target == color2) {
cout << "Enter the house " << 2 << endl;
} else if (color_target == color3) {
cout << "Enter the house " << 3 << endl;
} else {
cout << "Seek somewhere else" << endl;
}
}