Guest User

Untitled

a guest
Jul 23rd, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 5.37 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Nigzeret
  7. {
  8.     class Program
  9.     {
  10.         //פעולת פלט למערך מחרוזות
  11.         public static void Pelet(string[] arr)
  12.         {
  13.             for (int i = 0; i < arr.Length; i++)
  14.             {
  15.                 Console.WriteLine(arr[i]);
  16.             }
  17.         }
  18.  
  19.         //פעולה שמאפסת את כל האיברים במערל מחרוזות
  20.         public static void IpusStrArr(string[] arr)
  21.         {
  22.             for (int i = 0; i < arr.Length; i++)
  23.             {
  24.                 arr[i] = "";
  25.             }
  26.         }
  27.  
  28.         //פעולה שסופרת כמה איברים יש בביטוי מתמטי ומכניסה אותם למערך
  29.         public static string[] ArrOfEivar(string bitui)
  30.         {
  31.             int i, mone = 0;
  32.             //חלק ראשון, בניית המערך
  33.             for (i = 0; i < bitui.Length; i++)
  34.             {
  35.                 if ((bitui[i] == '+') || (bitui[i] == '-'))
  36.                     mone = mone + 2;
  37.             }
  38.             string[] eivar = new string[mone + 1];
  39.             //חלק שני, הכנסת איברים למערך כולל הסימנים האלגבריים
  40.             IpusStrArr(eivar);
  41.             int index = 0;
  42.             for (i = 0; i < bitui.Length; i++)
  43.             {
  44.                 if ((bitui[i] != '-') && (bitui[i] != '+'))
  45.                     eivar[index] = eivar[index] + bitui[i];
  46.                 else
  47.                 {
  48.                     index++;
  49.                     eivar[index] = "" + bitui[i];
  50.                     index++;
  51.                 }
  52.             }
  53.             return eivar;
  54.         }
  55.  
  56.         //פעולה שבודקת האם מחרוזות מורכבת רק מספרות
  57.         public static bool StrSfarot (string s)
  58.         {
  59.             for (int i=0;i<s.Length;i++)
  60.             {
  61.                 if ((s[i]>'9')||(s[i]<'0'))
  62.                     return false;
  63.             }
  64.             return true;
  65.         }
  66.  
  67.         //פעולה שמקבלת איבר מביטוי מתמטי ומחזירה את האיבר לאחר גזירה
  68.         public static string GozeretEivar(string eivar)
  69.         {
  70.             if (eivar.Length == 1)
  71.             {
  72.                 if (eivar == "x")
  73.                     return "1";
  74.                 else
  75.                     return "";
  76.             }
  77.             else
  78.             {
  79.                 int hezkaIndex;
  80.                 hezkaIndex = eivar.IndexOf('^');
  81.                 if (hezkaIndex == -1)
  82.                 {
  83.                     bool mispar = StrSfarot(eivar);
  84.                     if (mispar)
  85.                         return "";
  86.                     else
  87.                     {
  88.                         int xIndex = eivar.IndexOf('x');
  89.                         return eivar.Substring(0, xIndex);
  90.                     }
  91.                 }
  92.                 else
  93.                 {
  94.                     int basis, hezka,len;
  95.                     len = eivar.Length - (hezkaIndex + 1);
  96.                     hezka = Convert.ToInt16(eivar.Substring(hezkaIndex + 1, len));
  97.                     if ((eivar[0] > '9') || (eivar[0] < '0'))
  98.                         basis = 1;
  99.                     else
  100.                         basis = Convert.ToInt16(eivar.Substring(0, hezkaIndex - 1));
  101.                     string gazur;
  102.                     gazur = "" + (basis * hezka);
  103.                     gazur += "x^";
  104.                     gazur += hezka - 1;
  105.                     return gazur;
  106.                 }
  107.             }
  108.         }
  109.  
  110.         //פעולה שבודקת את האיבר הגזור המוחזר
  111.         public static string Bdika(string eivar)
  112.         {
  113.             string fix="";
  114.             int hezkaIndex;
  115.             hezkaIndex = eivar.IndexOf('^');
  116.             if (hezkaIndex != -1)
  117.             {
  118.                 if (eivar[hezkaIndex + 1] == '1')
  119.                 {
  120.                     for (int i = 0; i < hezkaIndex; i++)
  121.                         fix = fix + eivar[i];
  122.                     return fix;
  123.                 }
  124.                 else
  125.                 {
  126.                     if (eivar[hezkaIndex + 1] == '0')
  127.                     {
  128.                         int xIndex = eivar.IndexOf('x');
  129.                         fix = eivar.Substring(0, xIndex);
  130.                         return fix;
  131.                     }
  132.                     else
  133.                         return eivar;
  134.                 }
  135.             }
  136.             else
  137.                 return eivar;
  138.  
  139.         }
  140.  
  141.         //פעולה ראשית
  142.         public static string Gzira(string bitui)
  143.         {
  144.             string gzira = "", gazur;
  145.             string[] eivar = ArrOfEivar(bitui);
  146.             for (int i = 0; i < eivar.Length; i++)
  147.             {
  148.                 if ((eivar[i] == "+") || (eivar[i] == "-"))
  149.                 {
  150.                     if (StrSfarot(eivar[i + 1]) == false)
  151.                         gzira = gzira + eivar[i];
  152.                 }
  153.                 else
  154.                 {
  155.                     gazur = GozeretEivar(eivar[i]);
  156.                     gazur = Bdika(gazur);
  157.                     gzira = gzira + gazur;
  158.                 }
  159.             }
  160.             return gzira;
  161.         }
  162.        
  163.         static void Main(string[] args)
  164.         {
  165.             string g="3x^7+6-3x";
  166.             Console.WriteLine(Gzira(g));
  167.  
  168.         }
  169.     }
  170. }
Add Comment
Please, Sign In to add comment