Задание
У Марты потерялся кот Маркиз. Прохожий сказал ей, что видел похожего кота у одного из трёх домов около почтового отделения. На вопрос, у какого из домов он видел Маркиза, прохожий может вспомнить цвет дома, а также количество этажей в доме. Возможна ситуация, когда прохожий забыл часть информации или вообще всё.
Напишите программу, которая на основе показаний прохожего помогает принять Марте решение, в какие из трёх домов нужно зайти.
Формат входных и выходных данных
На вход программы подаются следующие данные, разделяемые пробелом:
цвет первого дома и количество этажей в нём,цвет второго дома и количество этажей в нём,
цвет третьего дома и количество этажей в нём,
цвет дома и количество этажей, которые сообщил прохожий. Если прохожий не помнит цвет дома или этажность, вместо цвета подаётся строка ? (вопросительный знак), а вместо количества этажей — число -1.
Программа должна вывести в порядке возрастания номера домов, в которые Марте надо зайти, по одному в каждой строке. Номера домов выводятся в виде чисел 1, 2 или 3. Номера домов, которые посещать не нужно, выводиться не должны.
int main() {
// Считайте информацию о трёх домах, которые видит перед собой Марта,
// а также показания очевидца.
// Выведите номера тех домов (1, 2, 3) которые нужно посетить,
// по одному номеру в каждой строке
string color1, color2, color3, color4;
int numb1, numb2, numb3, numb4;
cin >> color1 >> numb1 >> color2 >> numb2 >> color3 >> numb3 >> color4 >> numb4;
if ((color1 == color4) && (numb1 == numb4)) {
cout << 1 << endl;
} else if ((color2 == color4) && (numb2 == numb4)) {
cout << 2 << endl;
} else if ((color3 == color4) && (numb3 == numb4)) {
cout << 3 << endl;
} else {
if ((color1 == color4) || (color4 == "?"s && numb1 == numb4)) {
cout << 1 << endl;
};
if ((color2 == color4) || (color4 == "?"s && numb2 == numb4)) {
cout << 2 << endl;
};
if ((color3 == color4) || (color4 == "?"s && numb3 == numb4)) {
cout << 3 << endl;
};
};
if ((color1 == color4) && (numb1 == numb4) && (color2 == color4) && (numb2 == numb4))
{cout << 2 << endl;};
if ((color1 == color4) && (numb1 == numb4) && (color3 == color4) && (numb3 == numb4))
{cout << 3 << endl;};
if (color4 == "?"s) {
if(numb4 == -1) {
cout << 1 << endl;
cout << 2 << endl;
cout << 3 << endl;};
};
}
C/C++
Помогите с решением задачи в С++.
#include <algorithm>
#include <iostream>
#include <string>
#include <array>
using namespace std;
struct Home {
unsigned number;
long level;
string color;
Home()
: number(0), level(0) {}
Home(const unsigned number, const long level, const string& color)
: number(number), level(level), color(color) {}
private:
friend bool operator==(const Home& a, const Home& b) {
return a.level == b.level || a.color == b.color;
}
};
int main() {
array<Home, 3> street;
auto number = 0U;
long level;
string color;
for (auto& home : street) {
cin >> color >> level;
home = { ++number, level, color };
}
cin >> color >> level;
Home message{ 0U, level, color };
auto exist = find(street.begin(), street.end(), message);
if (exist != street.end()) {
for (const auto& home : street) {
if (home == message) cout << home.number << ' ';
}
} else {
for (const auto& home : street) cout << home.number << ' ';
}
puts("");
system("pause > nul");
}
#include <iostream>
#include <string>
#include <array>
using namespace std;
struct Home {
unsigned number;
long level;
string color;
Home()
: number(0), level(0) {}
Home(const unsigned number, const long level, const string& color)
: number(number), level(level), color(color) {}
private:
friend bool operator==(const Home& a, const Home& b) {
return a.level == b.level || a.color == b.color;
}
};
int main() {
array<Home, 3> street;
auto number = 0U;
long level;
string color;
for (auto& home : street) {
cin >> color >> level;
home = { ++number, level, color };
}
cin >> color >> level;
Home message{ 0U, level, color };
auto exist = find(street.begin(), street.end(), message);
if (exist != street.end()) {
for (const auto& home : street) {
if (home == message) cout << home.number << ' ';
}
} else {
for (const auto& home : street) cout << home.number << ' ';
}
puts("");
system("pause > nul");
}
Sergio ********
Ммда-а-а, Николай, Вы глубоко в ООП-е.
Александр, вообще-то цвет дома и количество этажей следует анализировать раздельно, ведь дом энного цвета и дом катой этажности это один и тот же дом. Достаточно идентифицировать его всего по одному признаку.
Подозрение на знак вопроса нужно проявить раньше, чем считывать число, иначе возможно, что при попытке прочитать число на входе окажется символ '?'. Для этого удобно использовать метод cin.peek(), который возвращает код следующего введённого символа, но не удаляет этот символ.
А главное — желательно в этом вопросе указать тему Вашего урока, иначе неизвестно, чем Вам разрешено пользоваться, а что Вы ещё не изучали.
Подозрение на знак вопроса нужно проявить раньше, чем считывать число, иначе возможно, что при попытке прочитать число на входе окажется символ '?'. Для этого удобно использовать метод cin.peek(), который возвращает код следующего введённого символа, но не удаляет этот символ.
А главное — желательно в этом вопросе указать тему Вашего урока, иначе неизвестно, чем Вам разрешено пользоваться, а что Вы ещё не изучали.
Олег Гайдай
Логические операции и, или, не . Если поможете буду вам благодарен.
#include <iostream>
using namespace std;
int main() {
string color1, color2, color3, color;
int floors1, floors2, floors3, floors;
cin >> color1 >> floors1;
cin >> color2 >> floors2;
cin >> color3 >> floors3;
cin >> color >> floors;
bool ignore_color = color == "?"s;
bool ignore_floor = floors == -1;
if ((ignore_color || color == color1) && (ignore_floor || floors == floors1)) {
cout << 1 << endl;
}
if ((ignore_color || color == color2) && (ignore_floor || floors == floors2)) {
cout << 2 << endl;
}
if ((ignore_color || color == color3) && (ignore_floor || floors == floors3)) {
cout << 3 << endl;
}
}
using namespace std;
int main() {
string color1, color2, color3, color;
int floors1, floors2, floors3, floors;
cin >> color1 >> floors1;
cin >> color2 >> floors2;
cin >> color3 >> floors3;
cin >> color >> floors;
bool ignore_color = color == "?"s;
bool ignore_floor = floors == -1;
if ((ignore_color || color == color1) && (ignore_floor || floors == floors1)) {
cout << 1 << endl;
}
if ((ignore_color || color == color2) && (ignore_floor || floors == floors2)) {
cout << 2 << endl;
}
if ((ignore_color || color == color3) && (ignore_floor || floors == floors3)) {
cout << 3 << endl;
}
}
#include
using namespace std;
int main() {
string color1, color2, color3, color4;
int numb1, numb2, numb3, numb4;
cin >> color1 >> numb1 >> color2 >> numb2 >> color3 >> numb3 >> color4 >> numb4;
if (((color1 == color4) && (numb1 == numb4)) || ((color1 == color4) && (numb4 == -1)) || ((color4 == "?"s) && (numb4 == -1)) || ((color4 == "?"s) && (numb1 == numb4))) {
cout << 1 << endl;
} if (((color2 == color4) && (numb2 == numb4)) || ((color2 == color4) && (numb4 == -1)) || ((color4 == "?"s) && (numb4 == -1)) || ((color4 == "?"s) && (numb2 == numb4))) {
cout << 2 << endl;
} if (((color3 == color4) && (numb3 == numb4)) || ((color3 == color4) && (numb4 == -1)) || ((color4 == "?"s) && (numb4 == -1)) || ((color4 == "?"s) && (numb3 == numb4))) {
cout << 3 << endl;
}
return 0;
}
using namespace std;
int main() {
string color1, color2, color3, color4;
int numb1, numb2, numb3, numb4;
cin >> color1 >> numb1 >> color2 >> numb2 >> color3 >> numb3 >> color4 >> numb4;
if (((color1 == color4) && (numb1 == numb4)) || ((color1 == color4) && (numb4 == -1)) || ((color4 == "?"s) && (numb4 == -1)) || ((color4 == "?"s) && (numb1 == numb4))) {
cout << 1 << endl;
} if (((color2 == color4) && (numb2 == numb4)) || ((color2 == color4) && (numb4 == -1)) || ((color4 == "?"s) && (numb4 == -1)) || ((color4 == "?"s) && (numb2 == numb4))) {
cout << 2 << endl;
} if (((color3 == color4) && (numb3 == numb4)) || ((color3 == color4) && (numb4 == -1)) || ((color4 == "?"s) && (numb4 == -1)) || ((color4 == "?"s) && (numb3 == numb4))) {
cout << 3 << endl;
}
return 0;
}
Похожие вопросы
- Помогите с решением задачи на языке СИ
- Помогите с решением задачи С++
- Помогите с решением задачи на С++
- Основы программирования. Решение задач. Обработка структур. Программа.
- Тренажеры по решению задач С++.
- Помогите с кодом задачи c++. задача на фото
- Решение задач по с++
- Помогите пожалуйста с задачей на c++, если кто-нибудь захочет помочь.
- Помогите с двумя задачами на с++.
- Помогите пожалуйста с задачей по С++