#include <iostream>
#include <cmath>
using namespace std;
struct Point {
int x;
int y;
};
class Quad {
public:
Quad(int x ,int y ,int w ,int h);
~Quad() {}
void opseg();
void povrsina();
void dijagonala();
protected:
void init_ASM_DATA();
private:
Point m_topLeft;
int m_width;
int m_height;
int data_ASM[4];
};
Quad::Quad(int x ,int y ,int w ,int h)
{
m_topLeft.x = x;
m_topLeft.y = y;
m_width = w;
m_height = h;
init_ASM_DATA();
}
void Quad::init_ASM_DATA()
{
data_ASM[0] = m_topLeft.x;
data_ASM[1] = m_topLeft.y;
data_ASM[2] = m_width;
data_ASM[3] = m_height;
}
void Quad::opseg()
{
/*******FORMULA***************/
/* opseg = 2*width + 2*height*/
/****************************/
int res;
__asm__(
"movl %1 , %%esi \n"
"movl 8(%%esi) , %0 \n"
"addl 12(%%esi), %0 \n"
"imull $2 , %0 \n"
: "=b" (res)
: "a" (data_ASM)
);
cout<< "opseg: " << res << "\n";
}
void Quad::povrsina()
{
/*******FORMULA***************/
/* width * height */
/****************************/
int res;
__asm__(
"movl %1 , %%esi \n"
"movl 8(%%esi) , %0 \n"
"imull 12(%%esi), %0 \n"
: "=b" (res)
: "a" (data_ASM)
);
cout<< "povrsina: " << res << "\n";
}
void Quad::dijagonala()
{
/*******FORMULA***************/
/* sqrt(width^2 + height^2) */
/****************************/
int res;
__asm__(
"movl %1 , %%esi \n"
"movl 8(%%esi) , %0 \n"
"imull %0 , %0 \n"
"movl 12(%%esi) , %%ecx \n"
"imull %%ecx , %%ecx \n"
"addl %%ecx , %0 \n"
: "=b" (res)
: "a" (data_ASM)
);
cout<< "dijagonala: " << sqrt(res) << "\n";
}
int main()
{
int x , y , width , height;
cout<< "unesi koordinate gornje lijeve točke(x,y)\n";
cout<< ", sirinu i visinu pravokutnika\n";
cin>> x >> y >> width >> height;
int state;
cout<< "\nbiraj\n";
cout<< "3.Opseg pravokutinika\n";
cout<< "2.Površina pravokutinka\n";
cout<< "1.Opseg i površina pravokutinika\n";
cout<< "0.Opseg,površina i duljina dijagonale\n\n\n";
cin>> state;
cout<< "\n";
Quad pravokutnik(x , y , width , height);
switch(state)
{
case 0:
{
pravokutnik.dijagonala();
}
case 1:
{
pravokutnik.opseg();
}
case 2:
{
pravokutnik.povrsina();
}
break;
case 3:
{
pravokutnik.opseg();
}
break;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFBvaW50IHsKICAgIAogIGludCB4OyAgCiAgaW50IHk7CiAgCn07CgoKY2xhc3MgUXVhZCB7CgpwdWJsaWM6CiAgICBRdWFkKGludCB4ICxpbnQgeSAsaW50IHcgLGludCBoKTsgCiAgICB+UXVhZCgpIHt9CiAgICAKICAgIHZvaWQgb3BzZWcoKTsKICAgIHZvaWQgcG92cnNpbmEoKTsKICAgIHZvaWQgZGlqYWdvbmFsYSgpOwogICAgCnByb3RlY3RlZDoKICAgIHZvaWQgaW5pdF9BU01fREFUQSgpOwoKcHJpdmF0ZToKICAgIFBvaW50IG1fdG9wTGVmdDsgCiAgICBpbnQgICBtX3dpZHRoOwogICAgaW50ICAgbV9oZWlnaHQ7CiAgICAKICAgIGludCBkYXRhX0FTTVs0XTsgICAgICAgICAgICAKfTsKCgpRdWFkOjpRdWFkKGludCB4ICxpbnQgeSAsaW50IHcgLGludCBoKQp7CiAgICBtX3RvcExlZnQueCA9IHg7CiAgICBtX3RvcExlZnQueSA9IHk7CiAgICBtX3dpZHRoID0gdzsKICAgIG1faGVpZ2h0ID0gaDsKICAgIAogICAgaW5pdF9BU01fREFUQSgpOwp9Cgp2b2lkIFF1YWQ6OmluaXRfQVNNX0RBVEEoKQp7CiAgICBkYXRhX0FTTVswXSA9IG1fdG9wTGVmdC54OyAKICAgIGRhdGFfQVNNWzFdID0gbV90b3BMZWZ0Lnk7IAogICAgZGF0YV9BU01bMl0gPSBtX3dpZHRoOwogICAgZGF0YV9BU01bM10gPSBtX2hlaWdodDsKfQoKCnZvaWQgUXVhZDo6b3BzZWcoKQp7CiAgICAvKioqKioqKkZPUk1VTEEqKioqKioqKioqKioqKiovICAgIAogICAgLyogb3BzZWcgPSAyKndpZHRoICsgMipoZWlnaHQqLwogICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiAgICAKICAgIGludCByZXM7CiAgICAKICAgIF9fYXNtX18oCiAgICAgICAgCiAgICAgICAgIm1vdmwgJTEgLCAlJWVzaSAgICAgICAgXG4iICAgICAgIAogICAgICAgICJtb3ZsIDgoJSVlc2kpICwgJTAgICAgIFxuIgogICAgICAgICJhZGRsIDEyKCUlZXNpKSwgJTAgICAgIFxuIgogICAgICAgICJpbXVsbCAkMiAsICUwICAgICAgICAgIFxuIiAgICAgIAogICAgICAgIDogIj1iIiAocmVzKSAgICAgICAgICAgICAgIAogICAgICAgIDogImEiICAoZGF0YV9BU00pCiAgICAgICAgCiAgICAgICAgKTsKICAgCiAgIGNvdXQ8PCAib3BzZWc6ICIgPDwgcmVzIDw8ICJcbiI7Cn0KCgp2b2lkIFF1YWQ6OnBvdnJzaW5hKCkKewogICAgLyoqKioqKipGT1JNVUxBKioqKioqKioqKioqKioqLyAgICAKICAgIC8qIHdpZHRoICogaGVpZ2h0ICAgICAgICAgICAgKi8KICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgCiAgICAgaW50IHJlczsKICAgIAogICAgX19hc21fXygKICAgICAgICAKICAgICAgICAibW92bCAlMSAsICUlZXNpICAgICAgICBcbiIgICAgICAgCiAgICAgICAgIm1vdmwgOCglJWVzaSkgLCAlMCAgICAgXG4iCiAgICAgICAgImltdWxsIDEyKCUlZXNpKSwgJTAgICAgXG4iICAgICAgICAgICAgICAKICAgICAgICA6ICI9YiIgKHJlcykgICAgICAgICAgICAgICAKICAgICAgICA6ICJhIiAgKGRhdGFfQVNNKQogICAgICAgIAogICAgICAgICk7CiAgIAogICBjb3V0PDwgInBvdnJzaW5hOiAiIDw8IHJlcyA8PCAiXG4iOwogICAgCn0KCgoKdm9pZCBRdWFkOjpkaWphZ29uYWxhKCkKewogICAgLyoqKioqKipGT1JNVUxBKioqKioqKioqKioqKioqLyAgICAKICAgIC8qIHNxcnQod2lkdGheMiArIGhlaWdodF4yKSAgKi8KICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgCiAgICAgaW50IHJlczsKICAgIAogICAgX19hc21fXygKICAgICAgICAKICAgICAgICAibW92bCAlMSAsICUlZXNpICAgICAgICBcbiIgICAgICAgCiAgICAgICAgIm1vdmwgOCglJWVzaSkgLCAlMCAgICAgXG4iCiAgICAgICAgImltdWxsICUwICwgJTAgICAgICAgICAgXG4iCiAgICAgICAgIm1vdmwgMTIoJSVlc2kpICwgJSVlY3ggXG4iCiAgICAgICAgImltdWxsICUlZWN4ICwgJSVlY3ggICAgXG4iCiAgICAgICAgImFkZGwgJSVlY3ggLCAlMCAgICAgICAgXG4iICAgICAgICAgICAgICAKICAgICAgICA6ICI9YiIgKHJlcykgICAgICAgCiAgICAgICAgOiAiYSIgIChkYXRhX0FTTSkKICAgICAgICAKICAgICAgICApOwogICAgICAgICAgIAogICBjb3V0PDwgImRpamFnb25hbGE6ICIgPDwgc3FydChyZXMpIDw8ICJcbiI7CiAgICAKfQoKCmludCBtYWluKCkgCnsKICAgIGludCB4ICwgeSAsIHdpZHRoICwgaGVpZ2h0OwogICAgY291dDw8ICJ1bmVzaSBrb29yZGluYXRlIGdvcm5qZSBsaWpldmUgdG/EjWtlKHgseSlcbiI7CiAgICBjb3V0PDwgIiwgc2lyaW51IGkgdmlzaW51IHByYXZva3V0bmlrYVxuIjsgICAgICAgIAogICAgY2luPj4geCA+PiB5ID4+IHdpZHRoID4+IGhlaWdodDsgCiAgICAKICAgIGludCBzdGF0ZTsKICAgIGNvdXQ8PCAiXG5iaXJhalxuIjsKICAgIGNvdXQ8PCAiMy5PcHNlZyBwcmF2b2t1dGluaWthXG4iOwogICAgY291dDw8ICIyLlBvdnLFoWluYSBwcmF2b2t1dGlua2FcbiI7CiAgICBjb3V0PDwgIjEuT3BzZWcgaSBwb3ZyxaFpbmEgcHJhdm9rdXRpbmlrYVxuIjsKICAgIGNvdXQ8PCAiMC5PcHNlZyxwb3ZyxaFpbmEgaSBkdWxqaW5hIGRpamFnb25hbGVcblxuXG4iOwogICAgY2luPj4gc3RhdGU7CiAgICBjb3V0PDwgIlxuIjsKICAgIAogICAgUXVhZCBwcmF2b2t1dG5payh4ICwgeSAsIHdpZHRoICwgaGVpZ2h0KTsKICAgIAogICAgc3dpdGNoKHN0YXRlKQogICAgewogICAgICAgIGNhc2UgMDogCiAgICAgICAgewogICAgICAgICAgcHJhdm9rdXRuaWsuZGlqYWdvbmFsYSgpOyAgCiAgICAgICAgfQogICAgICAgIAogICAgICAgIGNhc2UgMToKICAgICAgICB7CiAgICAgICAgICAgIHByYXZva3V0bmlrLm9wc2VnKCk7IAogICAgICAgIH0KICAgICAgICAKICAgICAgICBjYXNlIDI6CiAgICAgICAgewogICAgICAgICAgICBwcmF2b2t1dG5pay5wb3Zyc2luYSgpOyAKICAgICAgICB9CiAgICAgICAgYnJlYWs7CiAgICAgICAgCiAgICAgICAgY2FzZSAzOgogICAgICAgIHsKICAgICAgICAgICAgcHJhdm9rdXRuaWsub3BzZWcoKTsgCiAgICAgICAgfQogICAgICAgIGJyZWFrOyAgICAgICAKICAgIH0KICAgIAogICAgCiAgICAJCglyZXR1cm4gMDsKfQ==