Delphi ile Matematik !

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
s1lv3r
Üye
Mesajlar: 91
Kayıt: 09 Nis 2006 03:03

Delphi ile Matematik !

Mesaj gönderen s1lv3r »

Bir projeye başladım. Amacım yapay zekalarda ve bazı sitelerde (google) yapılan karışık matematik işlemini kendi programımda yapmak :)

şuan için sadece 4 işlem düşünüyorum örneğin ;

4*56-78+21/59*44+69-3

böyle bir işlemi işlem sırasına göre çözecek ve sonucu edite yazacak :)

fakat böyle birşeyi nasıl yapacağımı henüz bilmiyorum ben şöyle bir işlem yaptım çoğu zaman sonuca ulaşıyor fakat her karakteri memoya atıp memodan işlediği için sadece 0-9 arası yazılan işlemleri sırayla yazabiliyorum.

Kod: Tümünü seç

for i := 0 to memo1.lines.count-1 do
begin
if memo1.lines[i] = '*' then
begin
t := strtoint(inttostr(i-1)) ;
y := strtoint(inttostr(i+1)) ;
l := strtoint(memo1.lines[t]) ;
m := strtoint(memo1.lines[y]) ;

memo1.lines[t] := (inttostr(l*m)) ;
memo1.lines.Delete(y);
memo1.lines.Delete(y-1);
end;
end;
bu şekilde çarpma işlemine öncelik tanıyorum ve diğer işlemleri yaptırıp edite atıyorum. fakat bu şekilde 0-9 arası yapılıyor ve bazen yanlış sonuç çıkarıyor :shock:

az önce bahsetiğim projeyi nasl yapabilirim fikirlerinizi söylerseniz memnun olurum
ikut

Re: Delphi ile Matematik !

Mesaj gönderen ikut »

s1lv3r yazdı:Bir projeye başladım. Amacım yapay zekalarda ve bazı sitelerde (google) yapılan karışık matematik işlemini kendi programımda yapmak :)

şuan için sadece 4 işlem düşünüyorum örneğin ;

4*56-78+21/59*44+69-3

böyle bir işlemi işlem sırasına göre çözecek ve sonucu edite yazacak :)

fakat böyle birşeyi nasıl yapacağımı henüz bilmiyorum ben şöyle bir işlem yaptım çoğu zaman sonuca ulaşıyor fakat her karakteri memoya atıp memodan işlediği için sadece 0-9 arası yazılan işlemleri sırayla yazabiliyorum.

Kod: Tümünü seç

for i := 0 to memo1.lines.count-1 do
begin
if memo1.lines[i] = '*' then
begin
t := strtoint(inttostr(i-1)) ;
y := strtoint(inttostr(i+1)) ;
l := strtoint(memo1.lines[t]) ;
m := strtoint(memo1.lines[y]) ;

memo1.lines[t] := (inttostr(l*m)) ;
memo1.lines.Delete(y);
memo1.lines.Delete(y-1);
end;
end;
bu şekilde çarpma işlemine öncelik tanıyorum ve diğer işlemleri yaptırıp edite atıyorum. fakat bu şekilde 0-9 arası yapılıyor ve bazen yanlış sonuç çıkarıyor :shock:

az önce bahsetiğim projeyi nasl yapabilirim fikirlerinizi söylerseniz memnun olurum
http://www.torry.net te expression parser var. hsap makinesi için. onu bir dene.
mkysoft
Kıdemli Üye
Mesajlar: 3110
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

calc isimli bir companent var bu işi yapabilen. Bu iş için Vbasic de çok uğraşmıştım. Ama parse etmeye uğraşmadım hiç. Matematiksel ifadeyi vbscript yapıp windows'a çalıştırttırıyordum :) Bu sayede bir sürü kişi dersi geçmiştide ben düşük not almıştım çünkü programın başka yerinde hata varmış :)
Kullanıcı avatarı
drony
Üye
Mesajlar: 48
Kayıt: 10 Tem 2004 04:41
Konum: Istanbul
İletişim:

Mesaj gönderen drony »

pos ile aritmatik karterleri arat string içinde
her aritmatik karekteri bir diziye kaydet. ve ilk aritmatik ifade ile sonraki aritmatik ifade arasını copy ile al ve işle
En son drony tarafından 16 Ağu 2006 01:59 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
s1lv3r
Üye
Mesajlar: 91
Kayıt: 09 Nis 2006 03:03

Mesaj gönderen s1lv3r »

Aslında kendim yapmak istiyorum yani comp. kullanmak istemiyorum.

az önce bahsetiğim kodlar ile iyi bir sonuç elde ettim fakat ufak bir problem daha var

4.5+5 i veya

6.5-2 gibi bir işlem ile karşılaşınca program hata veriyor. Bu tür kesirli sayıları toplarken farklı bir yolmu kullanıyoruz ?
Kullanıcı avatarı
MGd.
Üye
Mesajlar: 41
Kayıt: 08 Nis 2006 06:47
Konum: Aydın

Mesaj gönderen MGd. »

integer tipi yerine float tipini kullanman sorununu çözer.
Mgdizayn.
Kullanıcı avatarı
Trial_Cooder
Üye
Mesajlar: 236
Kayıt: 17 Nis 2006 04:44

Mesaj gönderen Trial_Cooder »

Kod: Tümünü seç

Edit1.Text:= IntToStr(StrToInt(Edit1.Text) + StrToInt(Edit2.Text)); // + Toplama, - Çıkarma, * Çarpma İşlemi
ikut

Mesaj gönderen ikut »

Trial_Cooder yazdı:

Kod: Tümünü seç

Edit1.Text:= IntToStr(StrToInt(Edit1.Text) + StrToInt(Edit2.Text)); // + Toplama, - Çıkarma, * Çarpma İşlemi
Dostum ortada 2 -3 edit yok. tek bir ifade var....

((2*3)/4) + 5 gibi...
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

t-hex'in örneğinden esinlenebilirsin.

viewtopic.php?t=7607
Kullanıcı avatarı
MoSoft
Üye
Mesajlar: 80
Kayıt: 10 Nis 2005 10:45
Konum: Askerden....
İletişim:

Mesaj gönderen MoSoft »

http://www.ucretsizyazilim.com/index.php?topic=42.0
Burda bir örnek var inceleye bilirsin kodları ile birlikte.
Şafak 300 ( 10.04.2005) dü artık Yok....

http://www.ucretsizyazilim.com
Kısaca Ben : http://www.google.com.tr/search?hl=tr&q ... 5%9F&meta=
Cevapla