Advertisement
Jakobhorak28

Untitled

Feb 14th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.28 KB | None | 0 0
  1.         static void Main(string[] args)
  2.         {
  3.             Console.Write("Fakultätberechner von Jakob Horak\n");
  4.  
  5.             string val, val0;
  6.             bool finish;
  7.  
  8.             do
  9.             {
  10.                 do
  11.                 {
  12.                     Console.Write("\nGeben sie bitte den Wert ein, von dem\ndie Fakultät berechnet werden soll: ");
  13.                 } while (Read(out val));
  14.  
  15.                 val0 = val;
  16.  
  17.                 if (val == "0")
  18.                     Console.Write("Die Fakultät von 0 beträt 1\n");
  19.                 else
  20.                 {
  21.                     Console.WriteLine("Berechnen...");
  22.                     StringFactorialref(ref val);
  23.                     Console.Write("Die Fakultät von {0} beträt {1}\n", val0, val);
  24.                 }
  25.                 Console.Write("Wollen Sie das Programm wiederholen? (Y/N): ");
  26.             } while (Console.ReadLine().ToUpper() == "Y");
  27.         }
  28.  
  29.         static bool Read(out string value)
  30.         {
  31.             int temp;
  32.             if (!int.TryParse(Console.ReadLine(), out temp) || temp < 0)
  33.             {
  34.                 Console.WriteLine("Ungültige Eingabe!");
  35.                 value = "0";
  36.                 return true;
  37.             }
  38.             else
  39.                 value = temp.ToString();
  40.             return false;
  41.         }
  42.  
  43.         static void StringFactorialref(ref string value)
  44.         {
  45.             string temp = "1";
  46.             for (string i = "1"; StringGoE(value, i); i = StringAdd(i, "1"))
  47.             {
  48.                 temp = StringMulti(temp, i.ToString());
  49.             }
  50.  
  51.             value = temp;
  52.         }
  53.  
  54.         //static string StringFactorial(string value)
  55.         //{
  56.         //    if (value == "0")
  57.         //        return "1";
  58.         //    else
  59.         //        return StringMulti(StringFactorial(StringDecrease(value)), value);
  60.         //}
  61.  
  62.         static string StringDecrease(string value)
  63.         {
  64.             char[] arr = value.ToCharArray();
  65.             Array.Reverse(arr);
  66.             for (int i = arr.Length - 1; i >= 0; i--)
  67.             {
  68.                 if (arr[i] == '0')
  69.                     continue;
  70.                 else
  71.                 {
  72.                     arr[i] = Convert.ToChar(Convert.ToString(Convert.ToInt32(arr[i].ToString()) - 1));
  73.                     break;
  74.                 }
  75.             }
  76.             return new string(arr);
  77.         }
  78.  
  79.         static string StringAdd(string a, string b)
  80.         {
  81.             char[] arra = a.ToCharArray(), arrb = b.ToCharArray(), temp, output;
  82.             int i, tempint;
  83.             int[] intarr;
  84.             string stringout;
  85.  
  86.             Array.Reverse(arra);
  87.             Array.Reverse(arrb);
  88.  
  89.             if (arra.Length < arrb.Length)
  90.             {
  91.                 temp = arra;
  92.                 arra = arrb;
  93.                 arrb = temp;
  94.             }
  95.  
  96.             if (arra.Length != arrb.Length)
  97.             {
  98.                 temp = new char[arra.Length];
  99.                 for (i = 0; i < arrb.Length; i++)
  100.                     temp[i] = arrb[i];
  101.                 arrb = temp;
  102.             }
  103.  
  104.             intarr = new int[arra.Length + 1];
  105.  
  106.  
  107.             for (i = 0; i < arra.Length; i++)
  108.             {
  109.                 int.TryParse(arra[i].ToString(), out tempint);
  110.                 intarr[i] = tempint;
  111.                 int.TryParse(arrb[i].ToString(), out tempint);
  112.                 intarr[i] += tempint;
  113.             }
  114.  
  115.             bool carry = false;
  116.             output = new char[intarr.Length];
  117.  
  118.             for (i = 0; i < intarr.Length; i++)
  119.             {
  120.                 if (carry)
  121.                     intarr[i] += 1;
  122.                 carry = intarr[i] >= 10;
  123.                 output[i] = Convert.ToChar(Convert.ToString(intarr[i] % 10));
  124.             }
  125.  
  126.             Array.Reverse(output);
  127.             stringout = new string(output);
  128.             while (stringout[0] == '0')
  129.                 stringout = stringout.Substring(1);
  130.  
  131.             return stringout;
  132.         }
  133.  
  134.         static string StringMulti(string a, string b)
  135.         {
  136.             string temp = "0";
  137.             for (string i = "1"; StringGoE(b, i); i = StringAdd(i, "1"))
  138.             {
  139.                 temp = StringAdd(temp, a);
  140.             }
  141.             return temp;
  142.         }
  143.  
  144.         static bool StringGoE(string a, string b)
  145.         {
  146.             while (a[0] == '0')
  147.                 a = a.Substring(1);
  148.  
  149.             while (b[0] == '0')
  150.                 b = b.Substring(1);
  151.  
  152.             if (a.Length > b.Length)
  153.                 return true;
  154.             else if (a.Length < b.Length)
  155.                 return false;
  156.             else
  157.             {
  158.                 for (int i = a.Length - 1; i >= 0; i--)
  159.                 {
  160.                     if (Convert.ToInt32(a[i]) > Convert.ToInt32(b[i]))
  161.                         return true;
  162.                     if (Convert.ToInt32(a[i]) < Convert.ToInt32(b[i]))
  163.                         return false;
  164.                 }
  165.                 return true;
  166.             }
  167.         }
  168.  
  169.         //static string StringAdd(string[] arr)
  170.         //{
  171.         //    string temp = StringAdd(arr[0], arr[1]);
  172.         //    for (int i = 2; i < arr.Length; i++)
  173.         //    {
  174.         //        temp = StringAdd(temp, arr[i]);
  175.         //    }
  176.         //    return temp;
  177.         //}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement