Advertisement
kot025

HW - Dialog.cs

Jun 12th, 2015
196
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 13.40 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace ConsoleApplicationHW
  8. {
  9.     class Dialog
  10.     {
  11.         static int AskForCommand(int qtyOfCommands)
  12.         {
  13.             int act;
  14.             bool ok;
  15.             do
  16.             {
  17.                 Console.Write("Команда: ");
  18.                 string buf = Console.ReadLine();
  19.                 ok = int.TryParse(buf, out act) && act >= 0 && act <= qtyOfCommands;
  20.                 if (!ok)
  21.                     Console.WriteLine("Доступны команды 0 - " + qtyOfCommands + ".");
  22.             } while (!ok);
  23.             return act;
  24.         }
  25.         static double AskForDouble()
  26.         {
  27.             double res;
  28.             string val = "";
  29.             bool ok;
  30.             do
  31.             {
  32.                 Console.Write("operand> ");
  33.                 val = Console.ReadLine();
  34.                 ok = double.TryParse(val, out res);
  35.                 if (!ok)
  36.                 {
  37.                     Console.WriteLine("Ошибка. Проверьте вводимые данные");
  38.                 }
  39.             } while (!ok);
  40.             return res;
  41.         }
  42.         static DegreeValue AskForDegree()
  43.         {
  44.             DegreeValue res;
  45.             string val = "";
  46.             do
  47.             {
  48.                 Console.Write("operand> ");
  49.                 val = Console.ReadLine();
  50.                 res = Parse(val);
  51.                 if (res == null)
  52.                 {
  53.                     Console.WriteLine("Ошибка. Проверьте вводимые данные");
  54.                 }
  55.             } while (res == null);
  56.             return res;
  57.         }
  58.         static int AskForInt()
  59.         {
  60.             int res;
  61.             string val = "";
  62.             bool ok;
  63.             do
  64.             {
  65.                 Console.Write("operand> ");
  66.                 val = Console.ReadLine();
  67.                 ok = int.TryParse(val, out res);
  68.                 if (!ok)
  69.                 {
  70.                     Console.WriteLine("Ошибка. Проверьте вводимые данные");
  71.                 }
  72.             } while (!ok);
  73.             return res;
  74.         }
  75.         static DegreeValue Parse(string operand)
  76.         {
  77.             try
  78.             {
  79.                 string[] dms = operand.Split('.');
  80.                 int deg = Convert.ToInt32(dms[0]);
  81.                 int min = Convert.ToInt32(dms[1]);
  82.                 int sec = Convert.ToInt32(dms[2]);
  83.                 return new DegreeValue(deg, min, sec);
  84.             }
  85.             catch (Exception)
  86.             {
  87.                 return null;
  88.             }
  89.         }
  90.         static void ShowDegreeValueMenu()
  91.         {
  92.             Console.WriteLine("0. В меню");
  93.             Console.WriteLine("1. +");
  94.             Console.WriteLine("2. -");
  95.             Console.WriteLine("3. *");
  96.             Console.WriteLine("4. /");
  97.             Console.WriteLine("5. sin");
  98.             Console.WriteLine("6. cos");
  99.             Console.WriteLine("7. tg");
  100.             Console.WriteLine("8. ctg");
  101.             //Console.WriteLine("9. Ввести новое значение операнда\n");
  102.         }
  103.         static void ShowDoubleMenu()
  104.         {
  105.             Console.WriteLine("0. В меню");
  106.             Console.WriteLine("1. arcsin");
  107.             Console.WriteLine("2. arccos");
  108.             Console.WriteLine("3. arctg");
  109.             Console.WriteLine("4. arcctg");
  110.             //Console.WriteLine("5. Ввести новое значение операнда\n");
  111.         }
  112.  
  113.         static DegreeValue Multiply(DegreeValue v1)
  114.         {
  115.             Console.Clear();
  116.             v1.Show();
  117.             Console.WriteLine("*");
  118.             int factor = AskForInt();
  119.             return Calculator.Multiply(v1, factor);
  120.         }
  121.        
  122.         static void Main(string[] args)
  123.         {
  124.             int mainCycle = -1;
  125.             int act = 0;
  126.             do
  127.             {
  128.                 Console.Clear();
  129.                 Console.WriteLine("0. Выход\n1. Калькулятор\n");
  130.                 mainCycle = AskForCommand(1);
  131.  
  132.                 switch (mainCycle)
  133.                 {
  134.                     case 1:
  135.                         object result = null;
  136.                         int choise = 0;
  137.                         Console.Clear();
  138.  
  139.                         Console.WriteLine("Градусы, минуты и секунды вводятся в одну строку без пробелов и разделяются точкой.\n");
  140.  
  141.                         Console.WriteLine("0. Назад\n1. Ввести градус\n2. Ввести число");
  142.                         choise = AskForCommand(2);
  143.                         Console.Clear();
  144.                         switch (choise)
  145.                         {
  146.                             case 1:
  147.                                 result = AskForDegree();
  148.                                 break;
  149.                             case 2:
  150.                                 result = AskForDouble();
  151.                                 break;
  152.                         }
  153.                         Console.Clear();
  154.                         int operation = 0;
  155.                         do
  156.                         {
  157.                             if (result is DegreeValue)
  158.                             {
  159.                                 DegreeValue degree = (DegreeValue)result;
  160.                                 DegreeValue degree2;
  161.                                 Console.Clear();
  162.                                 degree.Show();
  163.                                 Console.WriteLine();
  164.                                 ShowDegreeValueMenu();
  165.                                 operation = AskForCommand(8);
  166.                                 switch (operation)
  167.                                 {
  168.                                     case 1:
  169.                                         Console.Clear();
  170.                                         degree.Show();
  171.                                         Console.WriteLine("+");
  172.  
  173.                                         degree2 = AskForDegree();
  174.                                         result = Calculator.Plus(degree, degree2);
  175.  
  176.                                         degree = result as DegreeValue;
  177.                                         degree.Show();
  178.                                         Console.ReadLine();
  179.                                         break;
  180.                                     case 2:
  181.                                         Console.Clear();
  182.                                         degree.Show();
  183.                                         Console.WriteLine("-");
  184.  
  185.                                         degree2 = AskForDegree();
  186.                                         result = Calculator.Minus(degree, degree2);
  187.  
  188.                                         degree = result as DegreeValue;
  189.                                         degree.Show();
  190.                                         Console.ReadLine();
  191.                                         break;
  192.                                     case 3:
  193.                                         Console.Clear();
  194.                                         degree.Show();
  195.                                         Console.WriteLine("*");
  196.  
  197.                                         int factor = AskForInt();
  198.                                         result = Calculator.Multiply(degree, factor);
  199.  
  200.                                         degree = result as DegreeValue;
  201.                                         degree.Show();
  202.                                         Console.ReadLine();
  203.                                         break;
  204.                                     case 4:
  205.                                         Console.Clear();
  206.                                         degree.Show();
  207.                                         Console.WriteLine("/");
  208.  
  209.                                         int devisor = AskForInt();
  210.                                         result = Calculator.Divide(degree, devisor);
  211.  
  212.                                         degree = result as DegreeValue;
  213.                                         degree.Show();
  214.                                         Console.ReadLine();
  215.                                         break;
  216.                                     case 5:
  217.                                         result = Calculator.Sin(degree);
  218.                                         double val = (double)result;
  219.                                         Console.WriteLine("\nsin({0}) = {1}", degree, val);
  220.                                         Console.ReadLine();
  221.                                         break;
  222.                                     case 6:
  223.                                         result = Calculator.Cos(degree);
  224.                                         val = (double)result;
  225.                                         Console.WriteLine("\ncos({0}) = {1}", degree, val);
  226.                                         Console.ReadLine();
  227.                                         break;
  228.                                     case 7:
  229.                                         result = Calculator.Tg(degree);
  230.                                         val = (double)result;
  231.                                         Console.WriteLine("\ntg({0}) = {1}", degree, val);
  232.                                         Console.ReadLine();
  233.                                         break;
  234.                                     case 8:
  235.                                         result = Calculator.Ctg(degree);
  236.                                         val = (double)result;
  237.                                         Console.WriteLine("\nctg({0}) = {1}", degree, val);
  238.                                         Console.ReadLine();
  239.                                         break;
  240.                                 }
  241.                             }
  242.                             else if (result is double)
  243.                             {
  244.                                 double val = (double)result;
  245.                                 Console.Clear();
  246.                                 Console.WriteLine(val);
  247.                                 Console.WriteLine();
  248.                                 ShowDoubleMenu();
  249.                                 operation = AskForCommand(4);
  250.                                 DegreeValue degree;
  251.                                 switch (operation)
  252.                                 {
  253.                                     case 1:
  254.                                         if (!(val <= -1 || val >= 1))
  255.                                         {
  256.                                             result = Calculator.ArcSin(val);
  257.                                             degree = result as DegreeValue;
  258.                                             Console.Write("\narcsin({0}) = ", val);
  259.                                             degree.Show();
  260.                                             Console.ReadLine();
  261.                                         }
  262.                                         else
  263.                                         {
  264.                                             Console.WriteLine("Введенные данные не удовлетворяют области значений функции ArcSin");
  265.                                             Console.ReadLine();
  266.                                         }
  267.                                         break;
  268.                                     case 2:
  269.                                         if (!(val <= -1 || val >= 1))
  270.                                         {
  271.                                             result = Calculator.ArcCos(val);
  272.                                             degree = result as DegreeValue;
  273.                                             Console.Write("\narccos({0}) = ", val);
  274.                                             degree.Show();
  275.                                             Console.ReadLine();
  276.                                         }
  277.                                         else
  278.                                         {
  279.                                             Console.WriteLine("Введенные данные не удовлетворяют области значений функции ArcCos");
  280.                                             Console.ReadLine();
  281.                                         }
  282.                                         break;
  283.                                     case 3:
  284.                                         result = Calculator.ArcTg(val);
  285.                                         degree = result as DegreeValue;
  286.                                         Console.Write("\narctg({0}) = ", val);
  287.                                         degree.Show();
  288.                                         Console.ReadLine();
  289.                                         break;
  290.                                     case 4:
  291.                                         result = Calculator.ArcCtg(val);
  292.                                         degree = result as DegreeValue;
  293.                                         Console.Write("\narcctg({0}) = ", val);
  294.                                         degree.Show();
  295.                                         Console.ReadLine();
  296.                                         break;
  297.                                 }
  298.  
  299.                             }
  300.                         } while (operation != 0);
  301.                         break;
  302.                 }
  303.             } while (mainCycle != 0);
  304.  
  305.            
  306.         }
  307.     }
  308. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement