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); }
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); }
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)); }
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); }
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ı); }
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); }
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); }
public UluDegisken uluSıfırlayıcı()//sıfırlar evelallah { UluDegisken u = new UluDegisken(0, ' ', 0); return(u); }
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); }
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); }
private static UluDegisken uluSıfırlayıcı() { UluDegisken u = new UluDegisken(0, ' ', 0); return(u); }