Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить задачу по информатике 10 класс

Alpha Makaron Ученик (149), закрыт 3 года назад
Надо решить на c++
Лучший ответ
Николай Веселуха Высший разум (360748) 4 года назад
#include <iostream>
using namespace std;
class Point {
public:
Point() : x_(0), y_(0) {}
Point(double x, double y) : x_(x), y_(y) {}
double x()const { return x_; }
double y()const { return y_; }
double radius()const { return sqrt(x_ * x_ + y_ * y_); }
double radius(double dx, double dy)const {
return sqrt(pow(x_ + dx, 2) + pow(y_ + dy, 2));
}
private:
double x_;
double y_;
};
struct Field {
Field() : first(0), second(0), third(0), fourth(0) {}
unsigned short first : 1;
unsigned short second : 1;
unsigned short third : 1;
unsigned short fourth : 1;
friend ostream& operator<<(ostream& out, const Field& field) {
out << field.first << field.second << field.third << field.fourth;
return out;
}
};
class Position {
public:
using spot = bool (*)(const Point& point);
Position(const Point& point) : point_(point) {}
Field get()const { return field_; }
void first(spot func) { if (func(point_)) field_.first = 1; }
void second(spot func) { if (func(point_)) field_.second = 1; }
void third(spot func) { if (func(point_)) field_.third = 1; }
void fourth(spot func) { if (func(point_)) field_.fourth = 1; }
private:
Point point_;
Field field_;
};
int main() {
auto f1 = [](const Point& p) { return p.y() < 1; };
auto f2 = [](const Point& p) { return p.y() < -p.x(); };
auto f3 = [](const Point& p) { return p.radius() < 1; };
auto f4 = [](const Point& p) { return p.radius(-1, -1) < 1; };
double x, y;
cin >> x >> y;
Point point(x, y);
Position position(point);
position.first(f1);
position.second(f2);
position.third(f3);
position.fourth(f4);
cout << position.get() << '\n';
system("pause");
}
Владимир ДонскихМудрец (16025) 4 года назад
А ещё длиннее можно было?
Николай Веселуха Высший разум (360748) Это код и так на вырост))
Alpha MakaronУченик (149) 4 года назад
А что так длинно?
Николай Веселуха Высший разум (360748) Lego Chel, разрешаю сократить)
Остальные ответы
Владимир Донских Мудрец (16025) 4 года назад
#include iostream//iostream в угловых скобках, но Ответы их хавают
using namespace std;
int main()
{
double x,y;
int code[4]={}, i;
cin>>x>>y;
if(y<1) code[0]=1;
if(y<-x) code[1]=1;
if(x*x+y*y<1) code[2]=1;
if((x-1)*(x-1)+y*y<1) code[3]=1;
for(i=0;i<4;++i)
cout<<code[i];
return 0;
}
Alpha MakaronУченик (149) 4 года назад
Не работает
Владимир Донских Мудрец (16025) Lego Chel, где чего "не работает"? Запускаете, вводите два числа, получаете ответ. Если VStudio - запускаете Ctrl+F5 и настраиваете проект как "консольное приложение" - иначе окно с результатом сразу же закроется
Alpha MakaronУченик (149) 4 года назад
Когда вводишь 0,5 0,5 выдаёт 1010, а надо 1011
Владимир ДонскихМудрец (16025) 4 года назад
if((x-1)*(x-1)+y*y<1) code[3]=1;
Проверьте себя на аккуратность написания этой строчки
Alpha Makaron Ученик (149) Владимир Донских, всё равно не работает
Alpha MakaronУченик (149) 4 года назад
Точку
Alpha MakaronУченик (149) 4 года назад
Запятая не работает
Владимир Донских Мудрец (16025) тогда всё должно работать
Alpha MakaronУченик (149) 4 года назад
Компилятор запятую за и считает
Похожие вопросы