Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace Nigzeret
- {
- class Program
- {
- //פעולת פלט למערך מחרוזות
- public static void Pelet(string[] arr)
- {
- for (int i = 0; i < arr.Length; i++)
- {
- Console.WriteLine(arr[i]);
- }
- }
- //פעולה שמאפסת את כל האיברים במערל מחרוזות
- public static void IpusStrArr(string[] arr)
- {
- for (int i = 0; i < arr.Length; i++)
- {
- arr[i] = "";
- }
- }
- //פעולה שסופרת כמה איברים יש בביטוי מתמטי ומכניסה אותם למערך
- public static string[] ArrOfEivar(string bitui)
- {
- int i, mone = 0;
- //חלק ראשון, בניית המערך
- for (i = 0; i < bitui.Length; i++)
- {
- if ((bitui[i] == '+') || (bitui[i] == '-'))
- mone = mone + 2;
- }
- string[] eivar = new string[mone + 1];
- //חלק שני, הכנסת איברים למערך כולל הסימנים האלגבריים
- IpusStrArr(eivar);
- int index = 0;
- for (i = 0; i < bitui.Length; i++)
- {
- if ((bitui[i] != '-') && (bitui[i] != '+'))
- eivar[index] = eivar[index] + bitui[i];
- else
- {
- index++;
- eivar[index] = "" + bitui[i];
- index++;
- }
- }
- return eivar;
- }
- //פעולה שבודקת האם מחרוזות מורכבת רק מספרות
- public static bool StrSfarot (string s)
- {
- for (int i=0;i<s.Length;i++)
- {
- if ((s[i]>'9')||(s[i]<'0'))
- return false;
- }
- return true;
- }
- //פעולה שמקבלת איבר מביטוי מתמטי ומחזירה את האיבר לאחר גזירה
- public static string GozeretEivar(string eivar)
- {
- if (eivar.Length == 1)
- {
- if (eivar == "x")
- return "1";
- else
- return "";
- }
- else
- {
- int hezkaIndex;
- hezkaIndex = eivar.IndexOf('^');
- if (hezkaIndex == -1)
- {
- bool mispar = StrSfarot(eivar);
- if (mispar)
- return "";
- else
- {
- int xIndex = eivar.IndexOf('x');
- return eivar.Substring(0, xIndex);
- }
- }
- else
- {
- int basis, hezka,len;
- len = eivar.Length - (hezkaIndex + 1);
- hezka = Convert.ToInt16(eivar.Substring(hezkaIndex + 1, len));
- if ((eivar[0] > '9') || (eivar[0] < '0'))
- basis = 1;
- else
- basis = Convert.ToInt16(eivar.Substring(0, hezkaIndex - 1));
- string gazur;
- gazur = "" + (basis * hezka);
- gazur += "x^";
- gazur += hezka - 1;
- return gazur;
- }
- }
- }
- //פעולה שבודקת את האיבר הגזור המוחזר
- public static string Bdika(string eivar)
- {
- string fix="";
- int hezkaIndex;
- hezkaIndex = eivar.IndexOf('^');
- if (hezkaIndex != -1)
- {
- if (eivar[hezkaIndex + 1] == '1')
- {
- for (int i = 0; i < hezkaIndex; i++)
- fix = fix + eivar[i];
- return fix;
- }
- else
- {
- if (eivar[hezkaIndex + 1] == '0')
- {
- int xIndex = eivar.IndexOf('x');
- fix = eivar.Substring(0, xIndex);
- return fix;
- }
- else
- return eivar;
- }
- }
- else
- return eivar;
- }
- //פעולה ראשית
- public static string Gzira(string bitui)
- {
- string gzira = "", gazur;
- string[] eivar = ArrOfEivar(bitui);
- for (int i = 0; i < eivar.Length; i++)
- {
- if ((eivar[i] == "+") || (eivar[i] == "-"))
- {
- if (StrSfarot(eivar[i + 1]) == false)
- gzira = gzira + eivar[i];
- }
- else
- {
- gazur = GozeretEivar(eivar[i]);
- gazur = Bdika(gazur);
- gzira = gzira + gazur;
- }
- }
- return gzira;
- }
- static void Main(string[] args)
- {
- string g="3x^7+6-3x";
- Console.WriteLine(Gzira(g));
- }
- }
- }
Add Comment
Please, Sign In to add comment