#include <iostream>
#include <cmath>
using namespace std;
typedef bool dot(int y,int x,int size);
void draw(int yl,int yh,int xl,int xh,int size,dot *check)
{
for(int y=yl;y<=yh;++y,cout<<endl) for(int x=xl;x<=xh;++x) cout<<check(y,x,size)[" *"];
}
struct { const char *name; dot *check; } tb[]=
{
{"diamond",[](int y,int x,int size) { return abs(y)+abs(x)<=size; } },
{"triangle A",[](int y,int x,int size) { return y+x<=0; } },
{"triangle B",[](int y,int x,int size) { return y+x>=0; } },
{"triangle C",[](int y,int x,int size) { return y-x<=0; } },
{"triangle D",[](int y,int x,int size) { return y-x>=0; } },
{"rectangle",[](int y,int x,int size) { return (abs(y)==size)||(abs(x)==size); } },
{"cross A",[](int y,int x,int size) { return abs(y)==abs(x); } },
{"cross B",[](int y,int x,int size) { return (!y)||(!x); } },
{"hourglass A",[](int y,int x,int size) { return (y<=0)&&(x<=y)||(y>=0)&&(x>=y); } },
{"hourglass B",[](int y,int x,int size) { return (x<=0)&&(x>=y)||(x>=0)&&(x<=y); } },
{"ellipse A",[](int y,int x,int size) { return round(sqrt(x*x+y*y))==size; } },
{"ellipse B",[](int y,int x,int size) { return round(sqrt(x*x+y*y))<=size; } },
{"ellipse C",[](int y,int x,int size) { return round(sqrt(x*x+y*y))>size; } },
};
int main()
{
for(int count;(cout<<"Podaj rozmiar: ")&&(cin>>count);)
{
for(auto shape:tb)
{
cout<<shape.name<<':'<<endl;
draw(-count,count,-count,count,count,shape.check);
cout<<endl<<endl;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGJvb2wgZG90KGludCB5LGludCB4LGludCBzaXplKTsKCnZvaWQgZHJhdyhpbnQgeWwsaW50IHloLGludCB4bCxpbnQgeGgsaW50IHNpemUsZG90ICpjaGVjaykKewoJZm9yKGludCB5PXlsO3k8PXloOysreSxjb3V0PDxlbmRsKSBmb3IoaW50IHg9eGw7eDw9eGg7Kyt4KSBjb3V0PDxjaGVjayh5LHgsc2l6ZSlbIiAqIl07Cn0KCnN0cnVjdCB7IGNvbnN0IGNoYXIgKm5hbWU7IGRvdCAqY2hlY2s7IH0gdGJbXT0KewoJeyJkaWFtb25kIixbXShpbnQgeSxpbnQgeCxpbnQgc2l6ZSkgeyByZXR1cm4gYWJzKHkpK2Ficyh4KTw9c2l6ZTsgfSB9LAoJeyJ0cmlhbmdsZSBBIixbXShpbnQgeSxpbnQgeCxpbnQgc2l6ZSkgeyByZXR1cm4geSt4PD0wOyB9IH0sCgl7InRyaWFuZ2xlIEIiLFtdKGludCB5LGludCB4LGludCBzaXplKSB7IHJldHVybiB5K3g+PTA7IH0gfSwKCXsidHJpYW5nbGUgQyIsW10oaW50IHksaW50IHgsaW50IHNpemUpIHsgcmV0dXJuIHkteDw9MDsgfSB9LAoJeyJ0cmlhbmdsZSBEIixbXShpbnQgeSxpbnQgeCxpbnQgc2l6ZSkgeyByZXR1cm4geS14Pj0wOyB9IH0sCgl7InJlY3RhbmdsZSIsW10oaW50IHksaW50IHgsaW50IHNpemUpIHsgcmV0dXJuIChhYnMoeSk9PXNpemUpfHwoYWJzKHgpPT1zaXplKTsgfSB9LAoJeyJjcm9zcyBBIixbXShpbnQgeSxpbnQgeCxpbnQgc2l6ZSkgeyByZXR1cm4gYWJzKHkpPT1hYnMoeCk7IH0gfSwKCXsiY3Jvc3MgQiIsW10oaW50IHksaW50IHgsaW50IHNpemUpIHsgcmV0dXJuICgheSl8fCgheCk7IH0gfSwKCXsiaG91cmdsYXNzIEEiLFtdKGludCB5LGludCB4LGludCBzaXplKSB7IHJldHVybiAoeTw9MCkmJih4PD15KXx8KHk+PTApJiYoeD49eSk7IH0gfSwKCXsiaG91cmdsYXNzIEIiLFtdKGludCB5LGludCB4LGludCBzaXplKSB7IHJldHVybiAoeDw9MCkmJih4Pj15KXx8KHg+PTApJiYoeDw9eSk7IH0gfSwKCXsiZWxsaXBzZSBBIixbXShpbnQgeSxpbnQgeCxpbnQgc2l6ZSkgeyByZXR1cm4gcm91bmQoc3FydCh4KngreSp5KSk9PXNpemU7IH0gfSwKCXsiZWxsaXBzZSBCIixbXShpbnQgeSxpbnQgeCxpbnQgc2l6ZSkgeyByZXR1cm4gcm91bmQoc3FydCh4KngreSp5KSk8PXNpemU7IH0gfSwKCXsiZWxsaXBzZSBDIixbXShpbnQgeSxpbnQgeCxpbnQgc2l6ZSkgeyByZXR1cm4gcm91bmQoc3FydCh4KngreSp5KSk+c2l6ZTsgfSB9LAp9OwoKaW50IG1haW4oKQp7CiAgICBmb3IoaW50IGNvdW50Oyhjb3V0PDwiUG9kYWogcm96bWlhcjogIikmJihjaW4+PmNvdW50KTspCiAgICB7CgkgICAgZm9yKGF1dG8gc2hhcGU6dGIpCgkgICAgewoJICAgIAljb3V0PDxzaGFwZS5uYW1lPDwnOic8PGVuZGw7CgkgICAgICAgIGRyYXcoLWNvdW50LGNvdW50LC1jb3VudCxjb3VudCxjb3VudCxzaGFwZS5jaGVjayk7CgkgICAgICAgIGNvdXQ8PGVuZGw8PGVuZGw7CgkgICAgfQogICAgfQoJcmV0dXJuIDA7Cn0K