Advertisement
sMteX

Untitled

Nov 21st, 2015
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.83 KB | None | 0 0
  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #include <math.h>
  5. #include <iostream.h>
  6. #pragma hdrstop
  7.  
  8. #include "Unit1.h"
  9. #include "Unit2.h"
  10. //---------------------------------------------------------------------------
  11. #pragma package(smart_init)
  12. #pragma resource "*.dfm"
  13. TForm1 *Form1;
  14. //---------------------------------------------------------------------------
  15. __fastcall TForm1::TForm1(TComponent* Owner)
  16.     : TForm(Owner)
  17. {
  18. this->Width = 320;
  19. poVysledku = false;
  20. vybranOperand = false;
  21. }
  22. //---------------------------------------------------------------------------
  23. void __fastcall TForm1::Button1Click(TObject *Sender)
  24. {
  25. TButton *x = (TButton*)Sender;
  26. AnsiString string = Edit1->Text;
  27. if(poVysledku) //prepisujeme
  28. {
  29.   string = (AnsiString)"0";
  30.   poVysledku = false;
  31. }
  32. switch(x->Tag)
  33. {
  34.     case 0:
  35.     {
  36.         if(string != "0")
  37.            string += (AnsiString)"0";
  38.         break;
  39.     }
  40.     case 1:
  41.     {
  42.         if(string == "0")
  43.            string = (AnsiString)"1";
  44.         else
  45.            string += (AnsiString)"1";
  46.         break;
  47.     }
  48.     case 2:
  49.     {
  50.         if(string == "0")
  51.            string = (AnsiString)"2";
  52.         else
  53.            string += (AnsiString)"2";
  54.         break;
  55.     }
  56.     case 3:
  57.     {
  58.         if(string == "0")
  59.            string = (AnsiString)"3";
  60.         else
  61.            string += (AnsiString)"3";
  62.         break;
  63.     }
  64.     case 4:
  65.     {
  66.         if(string == "0")
  67.            string = (AnsiString)"4";
  68.         else
  69.            string += (AnsiString)"4";
  70.         break;
  71.     }
  72.     case 5:
  73.     {
  74.         if(string == "0")
  75.            string = (AnsiString)"5";
  76.         else
  77.            string += (AnsiString)"5";
  78.         break;
  79.     }
  80.     case 6:
  81.     {
  82.         if(string == "0")
  83.            string = (AnsiString)"6";
  84.         else
  85.            string += (AnsiString)"6";
  86.         break;
  87.     }
  88.     case 7:
  89.     {
  90.         if(string == "0")
  91.            string = (AnsiString)"7";
  92.         else
  93.            string += (AnsiString)"7";
  94.         break;
  95.     }
  96.     case 8:
  97.     {
  98.         if(string == "0")
  99.            string = (AnsiString)"8";
  100.         else
  101.            string += (AnsiString)"8";
  102.         break;
  103.     }
  104.     case 9:
  105.     {
  106.         if(string == "0")
  107.            string = (AnsiString)"9";
  108.         else
  109.            string += (AnsiString)"9";
  110.         break;
  111.     }
  112.     case 10:            //"C"
  113.     {
  114.         string = (AnsiString)"0";
  115.         vybranOperand = false;
  116.         poVysledku = true;
  117.         break;
  118.     }
  119.     case 11:            //","
  120.     {
  121.         string += (AnsiString)",";
  122.         break;
  123.     }
  124. }
  125. Edit1->Text = string;
  126. if(!vybranOperand)
  127.     op = 'e';
  128. }
  129. //---------------------------------------------------------------------------
  130. void __fastcall TForm1::Button13Click(TObject *Sender) //+
  131. {
  132. TButton *x = (TButton*)Sender;
  133. op1 = StrToFloat(Edit1->Text);
  134. switch(x->Tag)
  135. {
  136.     case 12: //+
  137.         op = '+';
  138.         break;
  139.     case 13: //-
  140.         op = '-';
  141.         break;
  142.     case 14: //*
  143.         op = '*';
  144.         break;
  145.     case 15: // /
  146.         op = '/';
  147.         break;
  148.     case 25: //x^y
  149.         op = '^';
  150.         break;
  151. }
  152. //nyni chci znova prepisovat
  153. vybranOperand = true;
  154. poVysledku = true;
  155. }
  156. //---------------------------------------------------------------------------
  157.  
  158. void __fastcall TForm1::Button14Click(TObject *Sender) //=
  159. {
  160. if(!vybranOperand)
  161.     op1 = StrToFloat(Edit1->Text);
  162. op2 = StrToFloat(Edit1->Text);
  163. switch(op)
  164. {
  165.     case 'e': //e jako empty = chci pouze zopakovat poslední výsledek
  166.         vys = op1;
  167.         break;
  168.     case '+':
  169.         vys = op1 + op2;
  170.         break;
  171.     case '-':
  172.         vys = op1 - op2;
  173.         break;
  174.     case '*':
  175.         vys = op1 * op2;
  176.         break;
  177.     case '/':
  178.     {
  179.             if(op2 != 0) //deleni 0
  180.             vys = op1 / op2;
  181.             else
  182.             {
  183.                     vys = 0;
  184.                     ShowMessage((AnsiString)"Deleni nulou!");
  185.             }
  186.         break;
  187.     }
  188.     case '^':
  189.     {
  190.         int n = floor(op2);
  191.         if(op1 == 0 && n <= 0) //osetreni stavu 0^(zaporne cislo) = 1/0
  192.         {
  193.            vys = 0;
  194.            ShowMessage((AnsiString)"Nezadouci hodnoty!");
  195.         }
  196.         else
  197.             vys = pow(op1, n);
  198.         break;
  199.     }
  200. }
  201. Edit1->Text = FloatToStr(vys);
  202. poVysledku = true;
  203. vybranOperand = false;
  204. op = 'e';
  205. }
  206. //---------------------------------------------------------------------------
  207. double TForm1::absV(double x)
  208. {
  209.     return((x < 0)?x*(-1):x);
  210. }
  211. void __fastcall TForm1::Button16Click(TObject *Sender) // ^2
  212. {
  213. TButton *x = (TButton*)Sender;
  214. op1 = StrToFloat(Edit1->Text);
  215. op = 'e';
  216. switch(x->Tag)
  217. {
  218.     case 16: //^2
  219.         vys = op1 * op1;
  220.         break;
  221.     case 17: //sqrt()
  222.     {
  223.         if(op1 >= 0)  //osetreni zapornych cisel
  224.             vys = Sqrt(op1);
  225.     else
  226.     {
  227.         vys = 0;
  228.         ShowMessage((AnsiString)"Pod odmocninou zaporne cislo!");
  229.     }
  230.     break;
  231.     }
  232.     case 18: //1/x
  233.     {
  234.             if(op1 != 0) //osetreni deleni 0
  235.                 vys = 1 / op1;
  236.             else
  237.             {
  238.                 vys = 0;
  239.         ShowMessage((AnsiString)"Deleni nulou!");
  240.             }
  241.         break;
  242.     }
  243.     case 19: //sin
  244.     vys = Sin(op1);
  245.     break;
  246.     case 20: //cos
  247.     vys = Cos(op1);
  248.     break;
  249.     case 21: //tg
  250.     vys = tan(op1);
  251.     break;
  252.     case 22: //x!
  253.     {
  254.         if(op1 >= 0 && op1 < 13) //12,9 se stejne zaokrouhli na 12 a 12! se jeste vejde do datoveho rozsahu intu
  255.     {
  256.             int n = floor(op1);
  257.             vys = 1;
  258.             for(int i = n; i >= 1; i--)
  259.                 vys *= i;
  260.     }
  261.         else
  262.     {
  263.                 vys = 0;
  264.         ShowMessage((AnsiString)"Faktorial mimo meze!");   //meze 0 - 12
  265.         }
  266.         break;
  267.     }
  268.     case 23: //^3
  269.     vys = op1 * op1 * op1;
  270.     break;
  271.     case 24: //10^x
  272.     vys = pow(10.0, floor(op1));
  273.     break;
  274. }
  275. Edit1->Text = FloatToStr(vys);
  276. poVysledku = true;
  277. }
  278. //---------------------------------------------------------------------------
  279.  
  280. void __fastcall TForm1::Button29Click(TObject *Sender)
  281. {
  282. this->Width = 320;
  283. Button30->Visible = true;
  284. }
  285. //---------------------------------------------------------------------------
  286.  
  287. void __fastcall TForm1::Button30Click(TObject *Sender)
  288. {
  289. this->Width = 450;
  290. Button30->Visible = false;
  291. }
  292. //---------------------------------------------------------------------------
  293.  
  294. void __fastcall TForm1::Button31Click(TObject *Sender)
  295. {
  296. Application->Terminate();
  297. }
  298. //---------------------------------------------------------------------------
  299.  
  300. void __fastcall TForm1::Button24Click(TObject *Sender) //pi
  301. {
  302. poVysledku = true;
  303. Edit1->Text = "3,1415926535897";
  304. }
  305. //---------------------------------------------------------------------------
  306.  
  307. void __fastcall TForm1::Button32Click(TObject *Sender)
  308. {
  309. TForm2 *form2 = new TForm2(this);
  310. form2->Show();
  311. }
  312. //---------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement