4 işlem ama bildiğiniz gibi değil

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Amd64
Üye
Mesajlar: 11
Kayıt: 07 May 2014 11:04

4 işlem ama bildiğiniz gibi değil

Mesaj gönderen Amd64 » 29 Eyl 2017 11:13

Selam

ekteki resim her şeyi anlatıyor olmalı, hamallık yapmadan en kolay yoldan hangi mantıkla nasıl halledebilirim? Sayılara göre işlemler uzayıp kısalabilir sıkıntı burada? 20 yıldır hasbel kader amatör kod yazıyorum defomuzu çocuğumuz açığa çıkardı :D

Teşekkürler, saygılar.

Resim
Dosya ekleri
4islem.PNG
4islem.PNG (2.11 KiB) 201 kere görüntülendi

mkysoft
Kıdemli Üye
Mesajlar: 2812
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: 4 işlem ama bildiğiniz gibi değil

Mesaj gönderen mkysoft » 29 Eyl 2017 02:06

Standart bölme işlemi. Yapmak istediğiniz görsel olarak bunu elde etmek mi?

Amd64
Üye
Mesajlar: 11
Kayıt: 07 May 2014 11:04

Re: 4 işlem ama bildiğiniz gibi değil

Mesaj gönderen Amd64 » 29 Eyl 2017 02:33

mkysoft yazdı:
29 Eyl 2017 02:06
Standart bölme işlemi. Yapmak istediğiniz görsel olarak bunu elde etmek mi?
Aynen Hocam. Tüm TLabeller boş yada visible false olacak, TTedit'a göre işlem yapacağım. Kısmen hallettim sayılır ama çıkarma işlemlerinde hizalama sıkıntısı oluyor, tüm ihtimaller için (binler onlar yüzler birler vs vs) için 10 larca TLabel kullanabilirim ama dediğim gibi hamallık, Muharrem Hocanın dediği gibi" ince işçilik" istiyor algoritma.

Amd64
Üye
Mesajlar: 11
Kayıt: 07 May 2014 11:04

Re: 4 işlem ama bildiğiniz gibi değil

Mesaj gönderen Amd64 » 29 Eyl 2017 02:50

Kod: Tümünü seç

   bolunen := lblBolunen.caption;
   bolen   := lblBolen.Caption;
   bolum   := lblBolum.Caption;
   i       := Length(bolen); // bölenin karakter uzunluğu

   //SOL BAŞTAN bölünen bölenden büyük olacak şekilde sayı al
   bolunenHane := leftstr(bolunen,i);
   if bolunenHane<bolen then
   bolunenHane := leftstr(bolunen,i+1);

   bolum  := inttostr(strtoint(bolunenHane) div strtoint(bolen));
   deg1   := inttostr(strtoint(bolum)        *  strtoint(bolen));
   kalan1 := inttostr(strtoint(bolunenHane)  -  strtoint(deg1));

   lblBolum.Caption  := bolum;
   lbldeg1.Caption   := deg1;
   lblkalan1.Caption := kalan1;
gibi denemeler yapıyorum ama ... class bilmiyorum record la bir alt yapı kurmaya çalışacağım

mkysoft
Kıdemli Üye
Mesajlar: 2812
Kayıt: 25 Ağu 2003 11:35
Konum: İstanbul
İletişim:

Re: 4 işlem ama bildiğiniz gibi değil

Mesaj gönderen mkysoft » 30 Eyl 2017 05:18

düzgün hizalanması için system fontunu kullanabilirsiniz, her karakter aynı genişliktedir bu fonta. div ile bolumu, mod ile kalanı bulabilirsiniz. Yaptığınız işlemleri bir döngü içinde yapabilirsiniz.

onur2x
Üye
Mesajlar: 12
Kayıt: 29 Şub 2016 12:20

Re: 4 işlem ama bildiğiniz gibi değil

Mesaj gönderen onur2x » 04 Eki 2017 12:39

Eğer yanlış anlamadiysam. Tüm labelleri alt alta koyun autosize false yapın belli bir uzunluk verin Label aligment left yada right kullanarak hangisi sağ hangisi sol tarafa yazılacağını hizalayin.

Amd64
Üye
Mesajlar: 11
Kayıt: 07 May 2014 11:04

Re: 4 işlem ama bildiğiniz gibi değil

Mesaj gönderen Amd64 » 06 Eki 2017 05:25

onur2x yazdı:
04 Eki 2017 12:39
Eğer yanlış anlamadiysam. Tüm labelleri alt alta koyun autosize false yapın belli bir uzunluk verin Label aligment left yada right kullanarak hangisi sağ hangisi sol tarafa yazılacağını hizalayin.
Hocam left yada right kullanınca her iki sayı aynı uzunlukta değilse olmuyor. örneğin 9-8, 15-8 ve 48-25 işlemlerinde kalan karakter uzunluğu aynı olmadığı için hizalamaları da aynı değil, bunu kontrol eden function yazacağım (yada kalan sayının soluna gerektiği kadar sıfır bastırmak lazım).

Cevapla