metalni

Hristina's calculator fixed

Jun 13th, 2021 (edited)
346
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 15.56 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using static System.Math;
  11.  
  12. namespace ScientificCalculator
  13. {
  14.     public partial class Form1 : Form
  15.     {
  16.         Double result = 0.0;
  17.         bool done = false;
  18.         Double prev = 0;
  19.         Double saved = 0;
  20.         String op = "";
  21.         public Form1()
  22.         {
  23.             InitializeComponent();
  24.  
  25.         }
  26.  
  27.         public double factorial_recursion(double number)
  28.         {
  29.             if (number == 1 || number == 0)
  30.                 return 1;
  31.             else
  32.                 return number * factorial_recursion(number - 1);
  33.         }
  34.  
  35.         private void backspaceSign_Click(object sender, EventArgs e)
  36.         { // da se izbrise brojceto
  37.             textBox1.Clear();
  38.             label1.Text = " ";
  39.             done = false;
  40.             result = 0.0;
  41.             prev = 0;
  42.         }
  43.  
  44.         private void number3_Click(object sender, EventArgs e)
  45.         {
  46.             if (textBox1.Text == "0" || done == true)
  47.             {
  48.                 textBox1.Clear();
  49.                 label1.Text = "";
  50.             }
  51.             done = false;
  52.             textBox1.Text = textBox1.Text + "3";
  53.         }
  54.  
  55.         private void number8_Click(object sender, EventArgs e)
  56.         {
  57.             if (textBox1.Text == "0" || done == true)
  58.             {
  59.                 textBox1.Clear();
  60.                 label1.Text = "";
  61.             }
  62.             done = false;
  63.             textBox1.Text = textBox1.Text + "8";
  64.         }
  65.  
  66.         private void number7_Click(object sender, EventArgs e)
  67.         {
  68.             if (textBox1.Text == "0" || done == true)
  69.             {
  70.                 textBox1.Clear();
  71.                 label1.Text = "";
  72.             }
  73.             done = false;
  74.             textBox1.Text = textBox1.Text + "7";
  75.         }
  76.  
  77.         private void number6_Click(object sender, EventArgs e)
  78.         {
  79.             if (textBox1.Text == "0" || done == true)
  80.             {
  81.                 textBox1.Clear();
  82.                 label1.Text = "";
  83.             }
  84.             done = false;
  85.             textBox1.Text = textBox1.Text + "6";
  86.         }
  87.  
  88.         private void number5_Click(object sender, EventArgs e)
  89.         {
  90.             if (textBox1.Text == "0" || done == true)
  91.             {
  92.                 textBox1.Clear();
  93.                 label1.Text = "";
  94.             }
  95.             done = false;
  96.             textBox1.Text = textBox1.Text + "5";
  97.         }
  98.  
  99.         private void number4_Click(object sender, EventArgs e)
  100.         {
  101.             if (textBox1.Text == "0" || done == true)
  102.             {
  103.                 textBox1.Clear();
  104.                 label1.Text = "";
  105.             }
  106.             done = false;
  107.             textBox1.Text = textBox1.Text + "4";
  108.  
  109.         }
  110.  
  111.         private void number9_Click(object sender, EventArgs e)
  112.         {
  113.             if (textBox1.Text == "0" || done == true)
  114.             {
  115.                 textBox1.Clear();
  116.                 label1.Text = "";
  117.             };
  118.             done = false;
  119.             textBox1.Text = textBox1.Text + "9";
  120.         }
  121.  
  122.         private void number2_Click(object sender, EventArgs e)
  123.         {
  124.             if (textBox1.Text == "0" || done == true)
  125.             {
  126.                 textBox1.Clear();
  127.                 label1.Text = "";
  128.             }
  129.             done = false;
  130.             textBox1.Text = textBox1.Text + "2";
  131.         }
  132.  
  133.         private void number1_Click(object sender, EventArgs e)
  134.         {
  135.             if (textBox1.Text == "0" || done == true)
  136.             {
  137.                 textBox1.Clear();
  138.                 label1.Text = "";
  139.             }
  140.             done = false;
  141.             textBox1.Text = textBox1.Text + "1";
  142.         }
  143.  
  144.         private void number0_Click(object sender, EventArgs e)
  145.         {
  146.             if (textBox1.Text == "0" || done == true)
  147.             {
  148.                 textBox1.Clear();
  149.                 label1.Text = "";
  150.             }
  151.             done = false;
  152.             textBox1.Text = textBox1.Text + "0";
  153.         }
  154.  
  155.         private void periodSign_Click(object sender, EventArgs e)
  156.         { // za da dozvole samo 1 tocka da moze se napise kaj decimalnite
  157.             if (textBox1.Text.Contains(".") == false)
  158.                 textBox1.Text = textBox1.Text + ",";
  159.             prev = Convert.ToDouble(textBox1.Text);
  160.             done = false;
  161.         }
  162.         private void basicoperands(String name)
  163.         {
  164.             //label1.Text = label1.Text + textBox1.Text + name;
  165.             if(textBox1.Text != "")
  166.                 saved = Convert.ToDouble(textBox1.Text);
  167.             switch (name)
  168.             {
  169.                 case "+":
  170.                     result = prev + saved;
  171.                     done = true;
  172.                     label1.Text = Convert.ToString(result);
  173.                     textBox1.Clear();
  174.                     prev = 0;
  175.                     break;
  176.                 case "-":
  177.                     result = prev - saved;
  178.                     done = true;
  179.                     label1.Text = Convert.ToString(result);
  180.                     textBox1.Clear();
  181.                     prev = 0;
  182.                     break;
  183.                 case "*":
  184.                     result = saved * prev;
  185.                     done = true;
  186.                     label1.Text = Convert.ToString(result);
  187.                     textBox1.Clear();
  188.                     prev = 0;
  189.                     break;
  190.                 case "/":
  191.                     if (saved != 0)
  192.                     {
  193.                         result = prev / saved;
  194.                         done = true;
  195.                         label1.Text = Convert.ToString(result);
  196.                         textBox1.Clear();
  197.                         prev = 0;
  198.                         break;
  199.                     }
  200.                     else
  201.                     {
  202.                         MessageBox.Show("Не може да се дели со 0.");
  203.                         done = true;
  204.                         label1.Text = Convert.ToString(result);
  205.                         textBox1.Clear();
  206.                         prev = 0;
  207.                         break;
  208.                     }
  209.                 case "^":
  210.                     result = Math.Pow(prev, saved);
  211.                     done = true;
  212.                     label1.Text = Convert.ToString(result);
  213.                     textBox1.Clear();
  214.                     prev = 0;
  215.                     break;
  216.             }
  217.         }
  218.         private void otheroperands(String name)
  219.         {
  220.             label1.Text = label1.Text + name + "(" + textBox1.Text + ")"; // voa e za log (x), ln (x), factorial (x), trigonometriskite
  221.             //textBox1.Clear();
  222.         }
  223.         private void multSign_Click(object sender, EventArgs e)
  224.         {
  225.             if (prev == 0)
  226.                 prev = Convert.ToDouble(textBox1.Text);
  227.             else
  228.                 prev *= Convert.ToDouble(textBox1.Text);
  229.             op = "*";
  230.             label1.Text += textBox1.Text + op;
  231.             textBox1.Clear();
  232.         }
  233.  
  234.         private void divisionSign_Click(object sender, EventArgs e)
  235.         {
  236.             if(prev == 0)
  237.                 prev = Convert.ToDouble(textBox1.Text);
  238.             else
  239.                 prev /= Convert.ToDouble(textBox1.Text);
  240.             op = "/";
  241.             label1.Text += textBox1.Text + op;
  242.             textBox1.Clear();
  243.         }
  244.  
  245.         private void minusSign_Click(object sender, EventArgs e)
  246.         {
  247.             if (prev == 0)
  248.                 prev = Convert.ToDouble(textBox1.Text);
  249.             else
  250.                 prev -= Convert.ToDouble(textBox1.Text);
  251.             op = "-";
  252.             label1.Text += textBox1.Text + op;
  253.             textBox1.Clear();
  254.         }
  255.  
  256.         private void plusSign_Click(object sender, EventArgs e)
  257.         {
  258.             prev += Convert.ToDouble(textBox1.Text);
  259.             op = "+";
  260.             label1.Text += textBox1.Text + op;
  261.             textBox1.Clear();
  262.         }
  263.  
  264.         private void rootFunction_Click(object sender, EventArgs e)
  265.         {
  266.             otheroperands(rootFunction.Name);
  267.             Double tmp = Double.Parse(textBox1.Text);
  268.             this.result = Math.Sqrt(tmp);
  269.             finished(result.ToString());
  270.         }
  271.         private void finished(String rez)
  272.         {
  273.             textBox1.Text = rez;
  274.             label1.Text = label1.Text + "=";
  275.             done = true;
  276.             prev = Double.Parse(rez);
  277.         }
  278.  
  279.         private void xpoweryFunction_Click(object sender, EventArgs e)
  280.         {
  281.             prev = Convert.ToDouble(textBox1.Text);
  282.             textBox1.Clear();
  283.             op = "^";
  284.             label1.Text += Convert.ToString(prev) + op;
  285.         }
  286.  
  287.         private void tenpowerxFunction_Click(object sender, EventArgs e)
  288.         {
  289.             otheroperands(tenpowerxFunction.Name);
  290.             Double tmp = Double.Parse(textBox1.Text);
  291.             this.result = Math.Pow(10, tmp);
  292.             finished(result.ToString());
  293.         }
  294.  
  295.         private void logFunction_Click(object sender, EventArgs e)
  296.         {
  297.             if (textBox1.Text != "")
  298.             {
  299.                 otheroperands(logFunction.Name);
  300.                 Double tmp = Double.Parse(textBox1.Text);
  301.                 this.result = Math.Log10(tmp);
  302.                 finished(result.ToString());
  303.             }
  304.             else
  305.             {
  306.                 MessageBox.Show("Мора да внесете бројка прво");
  307.             }
  308.         }
  309.  
  310.         private void lnFunction_Click(object sender, EventArgs e)
  311.         {
  312.             if (textBox1.Text != "")
  313.             {
  314.                 otheroperands(lnFunction.Text);
  315.                 Double tmp = Double.Parse(textBox1.Text);
  316.                 this.result = Math.Log(tmp);
  317.                 finished(result.ToString());
  318.             }
  319.             else
  320.             {
  321.                 MessageBox.Show("Мора да внесете бројка прво");
  322.             }
  323.         }
  324.  
  325.         private void xsquaredFunction_Click(object sender, EventArgs e)
  326.         {
  327.             otheroperands(xsquaredFunction.Name);
  328.             Double tmp = Double.Parse(textBox1.Text);
  329.             this.result = tmp * tmp;
  330.             finished(result.ToString()); // kaj via funkcii ima finished povikano oti na obicnite kalkulatori
  331.             // kaa ke stisnis odma go dava rezulatot ne mora da stisnis na ednakvoto i zatoa ima na site povikano
  332.         }
  333.  
  334.         private void Form1_Load(object sender, EventArgs e)
  335.         {
  336.  
  337.         }
  338.  
  339.         private void nfactorialFunction_Click(object sender, EventArgs e)
  340.         {
  341.             if (textBox1.Text != "")
  342.             {
  343.                 otheroperands("fact");
  344.                 Double tmp = Convert.ToDouble(textBox1.Text);
  345.                 this.result = factorial_recursion(tmp);
  346.                 //this.result = Math. moze i ke napisam funkcija za faktoriel
  347.                 //finished(result.ToString());
  348.                 finished(result.ToString());
  349.             }
  350.             else
  351.             {
  352.                 MessageBox.Show("Мора да внесете бројка прво");
  353.             }
  354.         }
  355.  
  356.         private void piSign_Click(object sender, EventArgs e)
  357.         {
  358.             if (textBox1.Text == "0")
  359.                 textBox1.Clear();
  360.             done = false;
  361.             textBox1.Text = "3.14159265358979323";
  362.         }
  363.  
  364.         private void eSign_Click(object sender, EventArgs e)
  365.         {
  366.             if (textBox1.Text == "0")
  367.                 textBox1.Clear();
  368.             done = false;
  369.             textBox1.Text = "2.71828182845904523";
  370.         }
  371.  
  372.         private void sinFunction_Click(object sender, EventArgs e)
  373.         {
  374.             if (textBox1.Text != "")
  375.             {
  376.                 otheroperands(sinFunction.Text);
  377.                 Double tmp = Double.Parse(textBox1.Text);
  378.                 this.result = Math.Sin(tmp);
  379.                 finished(result.ToString());
  380.             }
  381.             else
  382.             {
  383.                 MessageBox.Show("Мора да внесете бројка прво");
  384.             }
  385.         }
  386.  
  387.         private void tanFunction_Click(object sender, EventArgs e)
  388.         {
  389.             if (textBox1.Text != "")
  390.             {
  391.                 otheroperands(tanFunction.Text);
  392.                 Double tmp = Double.Parse(textBox1.Text);
  393.                 this.result = Math.Tan(tmp);
  394.                 finished(result.ToString());
  395.             }
  396.             else
  397.             {
  398.                 MessageBox.Show("Мора да внесете бројка прво");
  399.             }
  400.         }
  401.  
  402.         private void cosFunction_Click(object sender, EventArgs e)
  403.         {
  404.             if (textBox1.Text != "")
  405.             {
  406.                 otheroperands(cosFunction.Text);
  407.                 Double tmp = Double.Parse(textBox1.Text);
  408.                 this.result = Math.Cos(tmp);
  409.                 finished(result.ToString());
  410.             }
  411.             else
  412.             {
  413.                 MessageBox.Show("Мора да внесете бројка прво");
  414.             }
  415.         }
  416.  
  417.         private void cotFunction_Click(object sender, EventArgs e)
  418.         {
  419.             if(textBox1.Text != "")
  420.             {
  421.                 otheroperands(cotFunction.Text);
  422.                 Double tmp = Double.Parse(textBox1.Text);
  423.                 this.result = Math.Cos(tmp)/Math.Sin(tmp);
  424.                 finished(result.ToString());
  425.             }
  426.             else
  427.             {
  428.                 MessageBox.Show("Мора да внесете бројка прво");
  429.             }
  430.         }
  431.  
  432.         private void equalSign_Click(object sender, EventArgs e)
  433.         {
  434.             if (op != "")
  435.                 basicoperands(op);
  436.         }
  437.  
  438.         private void absoluteValueFunction_Click(object sender, EventArgs e)
  439.         {
  440.             otheroperands(absoluteValueFunction.Name);
  441.             Double tmp = Double.Parse(textBox1.Text);
  442.             this.result = Math.Abs(tmp);
  443.             finished(result.ToString());
  444.         }
  445.  
  446.         private void upperValueSign_Click(object sender, EventArgs e)
  447.         {
  448.             if (textBox1.Text != "")
  449.             {
  450.                 otheroperands("ceil");
  451.                 Double tmp = Convert.ToDouble(textBox1.Text);
  452.                 this.result = Math.Ceiling(tmp);
  453.                 //this.result = Math. moze i ke napisam funkcija za faktoriel
  454.                 //finished(result.ToString());
  455.                 finished(result.ToString());
  456.             }
  457.             else
  458.             {
  459.                 MessageBox.Show("Мора да внесете бројка прво");
  460.             }
  461.         }
  462.  
  463.         private void lowerValueSign_Click(object sender, EventArgs e)
  464.         {
  465.             if (textBox1.Text != "")
  466.             {
  467.                 otheroperands("floor");
  468.                 Double tmp = Convert.ToDouble(textBox1.Text);
  469.                 this.result = Math.Floor(tmp);
  470.                 //this.result = Math. moze i ke napisam funkcija za faktoriel
  471.                 //finished(result.ToString());
  472.                 finished(result.ToString());
  473.             }
  474.             else
  475.             {
  476.                 MessageBox.Show("Мора да внесете бројка прво");
  477.             }
  478.         }
  479.  
  480.         private void negateSign_Click(object sender, EventArgs e)
  481.         {
  482.             if (textBox1.Text.Contains("-"))
  483.                 textBox1.Text = textBox1.Text.Substring(1);
  484.             else
  485.                 textBox1.Text = "-" + textBox1.Text;
  486.         }
  487.     }
  488. }
  489.  
Add Comment
Please, Sign In to add comment