示例#1
0
        public UluDegisken uluDegiskenTekliToplamTurev(UluDegisken dx, UluDegisken dt)//türev alıyomus buda sanırsam tek tek alıyor
        {
            UluDegisken uluToplam = new UluDegisken();

            uluToplam.isaretim = dx.isaretim;

            if (dx.tamKısım == dt.tamKısım)
            {
                uluToplam.tamKısım   = dt.tamKısım;
                uluToplam.katlıKısım = dx.katlıKısım * (dx.uluKısım / dt.uluKısım);
                uluToplam.uluKısım   = (dx.uluKısım / dt.uluKısım) - 1;
                if (dx.uluKısım == dt.uluKısım)
                {
                    uluToplam.katlıKısım = dx.katlıKısım;
                    uluToplam.tamKısım   = ' ';
                    uluToplam.uluKısım   = 1;
                }
            }
            else
            {
                uluToplam.tamKısım   = ' ';
                uluToplam.katlıKısım = 0;
                uluToplam.uluKısım   = 1;
            }

            return(uluToplam);
        }
示例#2
0
 private bool uluSıfırmı(UluDegisken a)//ulu degişkenin tam olarak 0 yani null olma koşulunu kontrol eder
 {
     if (a.katlıKısım == 0 && a.tamKısım == ' ' && a.uluKısım == 0)
     {
         return(true);
     }
     return(false);
 }
示例#3
0
        public UluDegisken[] uluSadelestirme(UluDegisken[] a)//buda sadelestirir bug vardı düzelttim bu sapasaglam
        {
            bool bidahamı = false;

            int kacAzaldık = 0;

            for (int i = 0; i < a.Length; i++)
            {
                if (bidahamı)
                {
                    i--;
                }
                bidahamı = false;
                for (int j = 0; j < a.Length; j++)
                {
                    if (i == j)
                    {
                        continue;
                    }
                    if ((a[i].tamKısım == a[j].tamKısım) && (a[i].uluKısım == a[j].uluKısım) && a[j].uluKısım != 0)
                    {
                        if (a[i].isaretim == a[j].isaretim)
                        {
                            kacAzaldık++;
                            a[i]    += a[j];
                            a[j]     = uluSıfırlayıcı();
                            bidahamı = true;
                        }
                        else if ((a[i].isaretim == '+' && a[j].isaretim == '-') || (a[i].isaretim == '-' && a[j].isaretim == '+'))
                        {
                            kacAzaldık++;
                            a[i]    -= a[j];
                            a[j]     = uluSıfırlayıcı();
                            bidahamı = true;
                        }
                    }
                }
            }

            UluDegisken[] uluSade = new UluDegisken[a.Length - kacAzaldık];
            for (int i = 0, p = 0; i < a.Length; i++)
            {
                if (!uluSıfırmı(a[i]))
                {
                    uluSade[p] = new UluDegisken();
                    uluSade[p] = a[i]; p++;
                }
            }


            if (kacAzaldık == 0)
            {
                return(uluSade);
            }
            return(uluSadelestirme(uluSade));
        }
示例#4
0
        public static UluDegisken operator*(UluDegisken a, UluDegisken b)
        {
            UluDegisken uluToplam = new UluDegisken();

            if (a.tamKısım == b.tamKısım)
            {
                uluToplam.tamKısım   = a.tamKısım;
                uluToplam.katlıKısım = a.katlıKısım * b.katlıKısım;
                uluToplam.uluKısım   = a.uluKısım + b.uluKısım;
            }

            return(uluToplam);
        }
示例#5
0
        public UluDegisken[] DenklemCözümleyici(UluDegisken[] unknowns)//bokumu çözümle ama harbi işe yarıyor
        {
            UluDegisken[] ayırıcı = new UluDegisken[unknowns.Length];
            int           indx    = 0;

            for (int i = 0; i < ayırıcı.Length; i++)
            {
                ayırıcı[indx] = new UluDegisken();
                if (unknowns[i].tamKısım != ' ')
                {
                    if (unknowns[i].sonucmu)
                    {
                        ayırıcı[indx] = uluIllalahEttirici(unknowns[i]);
                    }
                    else
                    {
                        ayırıcı[indx] = unknowns[i];
                    }

                    Console.WriteLine("katlıkısım = {0}\ttamkısım = {1} \t ulukısım = {2}\t sonucmu = {3}", ayırıcı[indx].katlıKısım, ayırıcı[indx].tamKısım, ayırıcı[indx].uluKısım, ayırıcı[indx].sonucmu);
                    indx++;
                    continue;
                }
            }
            for (int i = 0; i < ayırıcı.Length; i++)
            {
                //if (ayırıcı[indx] == null) ayırıcı[indx] = new UluDegisken();

                if (unknowns[i].tamKısım == ' ' && unknowns[i].katlıKısım != 0)
                {
                    if (unknowns[i].sonucmu)
                    {
                        ayırıcı[indx] = uluIllalahEttirici(unknowns[i]);
                    }
                    else
                    {
                        ayırıcı[indx] = unknowns[i];
                    }
                    //ayırıcı[indx] = (unknowns[i]);
                    Console.WriteLine("katlıkısım = {0}\ttamkısım = {1} \t ulukısım = {2}\t sonucmu = {3}", ayırıcı[indx].katlıKısım, ayırıcı[indx].tamKısım, ayırıcı[indx].uluKısım, ayırıcı[indx].sonucmu);
                    indx++;
                    continue;
                }
            }

            return(ayırıcı);
        }
示例#6
0
 public UluDegisken uluIllalahEttirici(UluDegisken ayırdım)//illallah ettirir yani tam tersine döner işaretler ,basit x i yanlız bırakma durumu
 {
     if (ayırdım.isaretim == '+')
     {
         ayırdım.isaretim = '-';
     }
     else if (ayırdım.isaretim == '-')
     {
         ayırdım.isaretim = '+';
     }
     else if (ayırdım.isaretim == '*')
     {
         ayırdım.isaretim = '/';
     }
     else
     {
         ayırdım.isaretim = '*';
     }
     return(ayırdım);
 }
示例#7
0
 public UluDegisken[] uluDegiskenToplamTurev(UluDegisken[] dx, UluDegisken[] dt)//kafasınca denklemin türevini alır
 {
     UluDegisken[] uluSonuc = new UluDegisken[dx.Length + kacTaneVar(uluDegiskenYazdır(dx), '*') * 2 + kacTaneVar(uluDegiskenYazdır(dx), '/') * 4];
     for (int i = 0; i < uluSonuc.Length; i++)
     {
         uluSonuc[i] = new UluDegisken();
     }
     for (int i = 0, a = 0; i < dx.Length; i++)
     {
         //     uluSonuc[i]= new UluDegisken();
         for (int j = 0; j < dt.Length; j++)
         {
             if (dx[i].isaretim == '+' || dx[i].isaretim == '-')
             {
                 uluSonuc[a] = uluDegiskenTekliToplamTurev(dx[i], dt[j]);
             }
             else if (dx[i].isaretim == '*')
             {
                 uluSonuc[a - 1] = uluDegiskenTekliToplamTurev(dx[i], dt[j]) * dx[i - 1];
                 uluSonuc[a]     = uluDegiskenTekliToplamTurev(dx[i - 1], dt[j]) * dx[i];
                 uluSonuc[++a]   = uluDegiskenTekliToplamTurev(dx[i], dt[j]) * dx[i - 1];
                 uluSonuc[++a]   = uluDegiskenTekliToplamTurev(dx[i - 1], dt[j]) * dx[i];
             }
             else if (dx[i].isaretim == '/')
             {
                 uluSonuc[a - 1] = uluDegiskenTekliToplamTurev(dx[i], dt[j]) * dx[i - 1];
                 uluSonuc[a]     = dx[i] ^ 2;
                 uluSonuc[++a]   = uluDegiskenTekliToplamTurev(dx[i - 1], dt[j]) * dx[i];
                 uluSonuc[++a]   = dx[i] ^ 2;
                 uluSonuc[++a]   = uluDegiskenTekliToplamTurev(dx[i], dt[j]) * dx[i - 1];
                 uluSonuc[++a]   = dx[i] ^ 2;
                 uluSonuc[++a]   = uluDegiskenTekliToplamTurev(dx[i - 1], dt[j]) * dx[i];
                 uluSonuc[++a]   = dx[i] ^ 2;
             }
         }
         a++;
     }
     return(uluSonuc);
 }
示例#8
0
        public UluDegisken uluSıfırlayıcı()//sıfırlar evelallah
        {
            UluDegisken u = new UluDegisken(0, ' ', 0);

            return(u);
        }
示例#9
0
        public UluDegisken[] uluDegiskenDiziAyırıcı(string a) // en iyisi bu ,basit token parser
        {
            a = bosluklarıYalarun(a);                         //boşlukları bi silmek gerekir
            UluDegisken[] ayırdım = new UluDegisken[kacTaneVar(a, isaretler) + 1];

            bool ustlumusunSen = false;
            int  baslat        = 0;
            bool ilkdenklemmi  = true;
            bool esitliksonu   = false;

            for (int i = 0; i < ayırdım.Length; i++)
            {
                int[] katSayı       = new int[a.Length];
                int[] uluSayı       = new int[a.Length];
                int   ta            = katSayı.Length - 1;
                int   t             = uluSayı.Length - 1;
                bool  isaretAldımmı = false;


                ayırdım[i] = new UluDegisken();

                for (int j = baslat; j < a.Length; j++)
                {
                    if (isInteger(a[j]))//sayı ise katlıkısım yada ulukısım
                    {
                        if (ustlumusunSen)
                        {
                            uluSayı[t] = a[j] - 48;
                            t--;
                            ilkdenklemmi  = false;
                            isaretAldımmı = true;
                        }
                        else if (a[j] != ' ')//demekki katlıkısımmıs
                        {
                            katSayı[ta] = a[j] - 48;
                            ta--;
                            ilkdenklemmi  = false;
                            isaretAldımmı = true;
                        }
                    }
                    else //sayı degilse işaretdir yada üst işaretim unutmadan bide degisken olma ihtimali var bura daha karısık önce burdan yazmak lazım
                    {
                        if (isaretmi(a[j])) //eger temel bir isaretimse alalım
                        {
                            ustlumusunSen = false;
                            if (ilkdenklemmi)
                            {
                                ilkdenklemmi        = false;
                                ayırdım[i].isaretim = a[j];
                                baslat        = j;
                                isaretAldımmı = true;
                                break;
                            }
                            else
                            {
                                if (isaretAldımmı)
                                {
                                    baslat = j;
                                    break;
                                }
                                else
                                {
                                    ayırdım[i].isaretim = a[j];
                                    baslat        = j;
                                    isaretAldımmı = true;
                                }
                            }
                        }
                        else if (a[j] == '^')//benim isaretim degilse üstlü sayi isareti olmasın ?
                        {
                            ustlumusunSen = true;
                        }
                        else if (a[j] == '=')
                        {
                            ustlumusunSen = false;
                            baslat        = j + 1;
                            ilkdenklemmi  = false;
                            esitliksonu   = true;
                            break;
                        }
                        else//oda degilse bu tamkısım olsa gerek
                        {
                            ayırdım[i].tamKısım = a[j];
                        }
                    }
                    if (esitliksonu)
                    {
                        ayırdım[i].sonucmu = true;
                    }
                }

                ayırdım[i].katlıKısım = katSayıTransformer(katSayı, katSayı.Length - 1 - ta);
                ayırdım[i].uluKısım   = katSayıTransformer(uluSayı, uluSayı.Length - 1 - t);
                if (ayırdım[i].katlıKısım == 0 && ayırdım[i].tamKısım != ' ')
                {
                    ayırdım[i].katlıKısım = 1;
                }
                if (ayırdım[i].uluKısım == 0)
                {
                    ayırdım[i].uluKısım = 1;
                }
                if (ayırdım[i].sonucmu)
                {
                    // ayırdım[i] = uluIllalahEttirici(ayırdım[i]);
                }
                // Console.WriteLine("katlıkısım = {0}\ttamkısım = {1} \t ulukısım = {2}", ayırdım[i].katlıKısım, ayırdım[i].tamKısım, ayırdım[i].uluKısım);
            }


            return(ayırdım);
        }
示例#10
0
        public static UluDegisken operator+(UluDegisken a, UluDegisken b)
        {
            UluDegisken uluToplam = new UluDegisken();

            if (a.uluKısım == 0)
            {
                a = uluSıfırlayıcı();
            }
            if (b.uluKısım == 0)
            {
                b = uluSıfırlayıcı();
            }
            if (a.isaretim == b.isaretim && a.uluKısım != 0)
            {
                uluToplam.isaretim = a.isaretim;
                if ((a.tamKısım == b.tamKısım) && (a.uluKısım == b.uluKısım))
                {
                    uluToplam.tamKısım   = a.tamKısım;
                    uluToplam.katlıKısım = a.katlıKısım + b.katlıKısım;
                    uluToplam.uluKısım   = a.uluKısım;
                }
                else
                {
                    uluToplam.tamKısım   = a.tamKısım;
                    uluToplam.katlıKısım = a.katlıKısım;
                    uluToplam.uluKısım   = a.uluKısım;
                    uluToplam.tamKısım   = b.tamKısım;
                    uluToplam.katlıKısım = b.katlıKısım;
                    uluToplam.uluKısım   = b.uluKısım;
                }
            }

            else
            {
                uluToplam.isaretim = a.isaretim;
                if ((a.tamKısım == b.tamKısım) && (a.uluKısım == b.uluKısım))
                {
                    uluToplam.tamKısım = a.tamKısım;
                    if (a.katlıKısım - b.katlıKısım > 0)
                    {
                        uluToplam.katlıKısım = a.katlıKısım - b.katlıKısım;
                    }
                    else if (a.katlıKısım - b.katlıKısım == 0)
                    {
                        uluToplam.isaretim = ' ';
                        uluToplam.tamKısım = ' ';
                        uluToplam.uluKısım = 1;
                    }

                    else
                    {
                        uluToplam.katlıKısım = b.katlıKısım - a.katlıKısım;
                    }
                    uluToplam.uluKısım = a.uluKısım;
                }
                else
                {
                    uluToplam.tamKısım   = a.tamKısım;
                    uluToplam.katlıKısım = a.katlıKısım;
                    uluToplam.uluKısım   = a.uluKısım;
                    uluToplam.tamKısım   = b.tamKısım;
                    uluToplam.katlıKısım = b.katlıKısım;
                    uluToplam.uluKısım   = b.uluKısım;
                }
            }
            if (uluToplam.uluKısım == 0)
            {
                uluToplam = uluSıfırlayıcı();
            }
            return(uluToplam);
        }
示例#11
0
        private static UluDegisken uluSıfırlayıcı()
        {
            UluDegisken u = new UluDegisken(0, ' ', 0);

            return(u);
        }