Dig komutu hk.

Başlatan Selçuk Şimşek, 26 Mayıs 2003, 01:29:20

Selçuk Şimşek

Sevgili arkadaşlar ilk yazımdan önce herkese selam.

Benim dig komutu ile başım dertte.

Sorun komutun anlatıldığı gibi çalışmaması.

sayi=245
sonuc=sayi DIG 1

sonuc=4 olmalı
ama olmuyor alakasız sonuclar veriyor.
Bunun kullanımı help te ve kitaplarda bu şekilde olmasına rağmen neden çalışmaz
benim onlar yüzler ya da birler basamağını rakam olarak seçme şansım başka ne şekilde olabilir.

Yardımcı olursanız sevinirim.

Selam sevgi ve saygıyla...

birumher

DIG komutunu denemedim ama daha uzun bir yöntem istersen şöyle yapabilirsin
Sayi = 254

1ler basmagı -> Sayı mod 10
10 lar basmagı -> (Sayı mod 100) div 10
100 ler basmağı (sayı mod 1000) div 100
1000 ler basmağı (sayı mod 10000) div 1000


diye gidiyor...
Aslında parantezlere de ihtiyacın yok kolay okunması açısından koyarsan iyi olur.
Picbasic te mod ve div komutları aynımıydı hatırlamıyorum ona göre değiştirebilirsin...
Birkan.Herguner

Selçuk Şimşek

mod ve div komutları hakkında picbasic pro komutları içinde hiçbir bilgi bulamadım.
Sanırım farklı bir programlama dilinden bahsediyoruz.
Bunları picbasic pro ile halletmeliyim.

İlginizden dolayı teşekküreder , yardımlarınızı beklerim..

mhk

Pic basicde arkadaşın yazdığı mod aritmetiği. Kısaca şöyle anlatayım. Örneğin 254 sayısında 2.digit olan 5 i bulmak istiyorsun. İlk önce 254 sayısını 10' böl.
değişken1=254/10 sonuç tam sayı cinsinden 25 çıkacaktır. değişken1=25 , Bu değerin 10 a bölümünden kalan sonuç 2.digit olan 5 sayısıdır. Yani; değişken2=değişken1//10 umarım yardımcı olmuşumdur. Hepinize iyi çalışmalar.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

birumher

mhk arkadaşa teşekkürler
yani div yerine /  
mod yerine // kullanacaksın...

div : tamsayı bölme
mod : bölme sonucu kalanı bulma

örneğin 89 div 10 veya picbasicte 89 / 10  : 8 e eşittir

örneğin 89 mod 10 veya picbasicte 89 // 10  : 9 a eşittir
Birkan.Herguner

Selçuk Şimşek

Yardımlarınız için teşekkür.
Dig komutu editorden 16f877 seçildiğinde çalışıyor.
(ama 84a da çalışmıyor )
LCD ye yazdırıyorum.
İlginç tarafı lcd 16f84 e bağlı.
877 için yazılan kod proteusta simüle edildiğinde çalışıyor.
gerçekte deneme şansım olmadı (lcd çok pahalı)
böyle bir kod gerçekte çalışırmı?

mhk

Zaten sana yazdıklarımız bir şekilde uygulamış olduğumuz sonuçlardır. Çalışacağından emin olabilirsin. Pic basic pro da sana daha önce yazmış olduğum açıklamayı bir daha bak istersen. Kolay gelsin.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

asm_Coder

picbasicplus 1.24 kullanıyorum.16f877a ile grafik lcd uygulaması yapıyorum.ancak kod boutu yeterli olmadığı için 18f452 ya geçtim.dig komutunu 16f877 için kullanıyorum iyi çalışıyor ama aynı programı 18f452 için kullandığımda

örneğin 27458 sayısı  ekranda 88888 olarak görünüyor.sayının son hanesini değiştirdiğimde yani 8 i 6 yaptığımda bu sefer 66666 görünüyor. yani sayını birler basamağı ne ise ekrana onu yazıyor.aynı programı 16f877için derlediğimde ekranda doğru sonuç yani 27458 sayısı görünüyor.

neden olabilir arkadaşlar :(
y=f(x);

mhk

Sevgili btiger programda sorun olabilir. Birde yukarda yazdığımız mod aritmetiğini kullan.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

tekniker_murat

Alıntı yapılan: birumher - 26 Mayıs 2003, 15:17:53DIG komutunu denemedim ama daha uzun bir yöntem istersen şöyle yapabilirsin
Sayi = 254

1ler basmagı -> Sayı mod 10
10 lar basmagı -> (Sayı mod 100) div 10
100 ler basmağı (sayı mod 1000) div 100
1000 ler basmağı (sayı mod 10000) div 1000


diye gidiyor...
Aslında parantezlere de ihtiyacın yok kolay okunması açısından koyarsan iyi olur.
Picbasic te mod ve div komutları aynımıydı hatırlamıyorum ona göre değiştirebilirsin...

ben bu işlemi mikroc de nasıl yapabilirim acaba ve 8 haneli bir ekranda görmek istiyorum
[email]murat.yagci.1984@gmail.com[/email]

ete

En kolay yolu şöyle,
254/100=2  Bu yüzler basamağı "Sayı/100=yuzler basamağı"
(254-(2*100))/10=5 buda onlar basamağı "(Sayı-(yuzler*100))/10=onlar basamağı"
(254-(2*100)-(5*10))=4 buda birler basamağı  "Sayı-(yuzler*100)-(onlar*10)=birler basamağı"

Mod alma hemen her derleyicide mevcut aslında  Mod işlemi ile yapılmak istenirse;
Birler=254 Mod 10
Onlar =(254 Mod 100)/10
Yuzler=254/100
Değişkenler unsigned ve INT cinsinden olmalı.

Ete
Bilgi hazinedir paylaştıkça büyür.            http://etepic.com

mehmet

binler = (sayi % 10000) / 1000;
yuzler = (sayi % 1000)  / 100;
onlar  = (sayi % 100)   / 10;
birler = (sayi % 10)    / 1;
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"